Version 2.18.0-167.0.dev
Merge commit '55a4649075343b7202b38fce41edeac3e84696ce' into 'dev'
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..5ace460
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,6 @@
+version: 2
+updates:
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "weekly"
diff --git a/DEPS b/DEPS
index 5756948..5a145db 100644
--- a/DEPS
+++ b/DEPS
@@ -77,7 +77,7 @@
# Revisions of /third_party/* dependencies.
"args_rev": "862d929b980b993334974d38485a39d891d83918",
"async_rev": "f3ed5f690e2ec9dbe1bfc5184705575b4f6480e5",
- "bazel_worker_rev": "ceeba0982d4ff40d32371c9d35f3d2dc1868de20",
+ "bazel_worker_rev": "9710de6c9c70b1b583183db9d9721ba64e5a16fe",
"benchmark_harness_rev": "0530da692a5d689f4b5450a7c8d1a8abe3e2d555",
"boolean_selector_rev": "1d3565e2651d16566bb556955b96ea75018cbd0c",
"boringssl_gen_rev": "ced85ef0a00bbca77ce5a91261a5f2ae61b1e62f",
@@ -89,7 +89,7 @@
"chrome_rev": "19997",
"cli_util_rev": "b0adbba89442b2ea6fef39c7a82fe79cb31e1168",
"clock_rev": "f594d86da123015186d5680b0d0e8255c52fc162",
- "collection_rev": "e1407da23b9f17400b3a905aafe2b8fa10db3d86",
+ "collection_rev": "69766daafbaa8535d1343fb7cd87e713f57c107f",
"convert_rev": "00b251529c074df394b3391c7e3eea3dd9e5778e",
"crypto_rev": "4297d240b0e1e780ec0a9eab23eaf1ad491f3e68",
"csslib_rev": "518761b166974537f334dbf264e7f56cb157a96a",
@@ -127,7 +127,7 @@
"markupsafe_rev": "8f45f5cfa0009d2a70589bcda0349b8cb2b72783",
"matcher_rev": "12cdc5fbafd666ed908359ae215d5d0306087969",
"mime_rev": "c2c5ffd594674f32dc277521369da1557a1622d3",
- "mockito_rev": "1e977a727e82a2e1bdb49b79ef1dce0f23aa1faa",
+ "mockito_rev": "fcd6b285f7c4a631778890cf02b52a9a68171a71",
"oauth2_rev": "199ebf15cbd5b07958438184f32e41c4447a57bf",
"package_config_rev": "cff98c90acc457a3b0750f0a7da0e351a35e5d0c",
"path_rev": "3d41ea582f5b0b18de3d90008809b877ff3f69bc",
@@ -135,7 +135,7 @@
"pool_rev": "c40cc32eabecb9d60f1045d1403108d968805f9a",
"protobuf_rev": "b149f801cf7a5e959cf1dbf72d61068ac275f24b",
"pub_rev": "51435efcd574b7bc18d47a5dd620cb9759dea8f8",
- "pub_semver_rev": "ea6c54019948dc03042c595ce9413e17aaf7aa38",
+ "pub_semver_rev": "5c0b4bfd5ca57fe16f1319c581dc8c882e9b8cb2",
"root_certificates_rev": "692f6d6488af68e0121317a9c2c9eb393eb0ee50",
"rust_revision": "b7856f695d65a8ebc846754f97d15814bcb1c244",
"shelf_rev": "05f42601d22c9bfe490ceda50e812f83b7d1de77",
@@ -143,19 +143,19 @@
"source_maps_rev": "c07a01b8d5547ce3a47ee7a7a2b938a2bc09afe3",
"source_span_rev": "8ae724c3e67f5afaacead44e93ff145bfb8775c7",
"sse_rev": "9a54f1cdd91c8d79a6bf5ef8e849a12756607453",
- "stack_trace_rev": "5220580872625ddee41e9ca9a5f3364789b2f0f6",
+ "stack_trace_rev": "17f09c2c6845bb31c7c385acecce5befb8527a13",
"stream_channel_rev": "3fa3e40c75c210d617b8b943b9b8f580e9866a89",
"string_scanner_rev": "6579871b528036767b3200b390a3ecef28e4900d",
"sync_http_rev": "b6bd47965694dddffb6e62fb8a6c12d17c4ae4cd",
"term_glyph_rev": "d0f205c67ea70eea47b9f41c8440129a72a9c86e",
- "test_descriptor_rev": "ead23c1e7df079ac0f6457a35f7a71432892e527",
+ "test_descriptor_rev": "5ed5d7f6bf1191592995dcb8eedbbc17df69d386",
"test_process_rev": "3e695bcfeab551473ddc288970f345f30e5e1375",
"test_reflective_loader_rev": "8d0de01bbe852fea1f8e33aba907abcba50a8a1e",
"test_rev": "d54846bc2b5cfa4e1445fda85c5e48a00940aa68",
"typed_data_rev": "8b19e29bcf4077147de4d67adeabeb48270c65eb",
- "usage_rev": "e85d575d6decb921c57a43b9844bba3607479f56",
+ "usage_rev": "79eef484e7403f24b414354a4af2008967484e46",
"vector_math_rev": "1c72944e8c2f02340a1d90b32aab2e3836cef8cc",
- "watcher_rev": "f76997ab0c857dc5537ac0975a9ada92b54ef949",
+ "watcher_rev": "e00c0ea769e32821d91c0880da8eb736839a6e6d",
"web_components_rev": "8f57dac273412a7172c8ade6f361b407e2e4ed02",
"web_socket_channel_rev": "99dbdc5769e19b9eeaf69449a59079153c6a8b1f",
"WebCore_rev": "bcb10901266c884e7b3740abc597ab95373ab55c",
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart
index beda821..0c23da3 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart
@@ -406,6 +406,18 @@
ElementKind.setterKind
],
);
+ } else if (container is ExtensionElement) {
+ _addMatcher(
+ components: [node.identifier.name, container.displayName],
+ kinds: const [
+ ElementKind.constantKind,
+ ElementKind.fieldKind,
+ ElementKind.functionKind, // tear-off
+ ElementKind.getterKind,
+ ElementKind.methodKind, // tear-off
+ ElementKind.setterKind
+ ],
+ );
}
}
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 542b4eb..375e92f 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -777,6 +777,9 @@
CompileTimeErrorCode.UNDEFINED_CONSTRUCTOR_IN_INITIALIZER_DEFAULT: [
AddSuperConstructorInvocation.new,
],
+ CompileTimeErrorCode.UNDEFINED_EXTENSION_GETTER: [
+ DataDriven.new,
+ ],
CompileTimeErrorCode.UNDEFINED_FUNCTION: [
DataDriven.new,
ImportLibrary.forExtension,
diff --git a/pkg/analysis_server/test/src/analytics/google_analytics_manager_test.dart b/pkg/analysis_server/test/src/analytics/google_analytics_manager_test.dart
index 129b7a0..e1e1804 100644
--- a/pkg/analysis_server/test/src/analytics/google_analytics_manager_test.dart
+++ b/pkg/analysis_server/test/src/analytics/google_analytics_manager_test.dart
@@ -20,11 +20,7 @@
@reflectiveTest
class GoogleAnalyticsManagerTest {
final analytics = _MockAnalytics();
- late final GoogleAnalyticsManager manager;
-
- void setUp() {
- manager = GoogleAnalyticsManager(analytics);
- }
+ late final manager = GoogleAnalyticsManager(analytics);
void test_plugin_request() {
_defaultStartup();
diff --git a/pkg/analysis_server/test/src/services/correction/fix/data_driven/rename_test.dart b/pkg/analysis_server/test/src/services/correction/fix/data_driven/rename_test.dart
index d39a127..2312d09 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/data_driven/rename_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/data_driven/rename_test.dart
@@ -839,6 +839,29 @@
''');
}
+ Future<void> test_static_reference_removed_extension() async {
+ setPackageContent('''
+extension C {
+ static int b;
+}
+''');
+ setPackageData(_rename(['a', 'C'], 'b'));
+ await resolveTestCode('''
+import '$importUri';
+
+void f() {
+ C.a;
+}
+''');
+ await assertHasFix('''
+import '$importUri';
+
+void f() {
+ C.b;
+}
+''');
+ }
+
Future<void> test_static_reference_removed_prefixed() async {
setPackageContent('''
class C {
diff --git a/pkg/analyzer/test/src/dart/resolution/instance_creation_test.dart b/pkg/analyzer/test/src/dart/resolution/instance_creation_test.dart
index ee95251..4ea37fe 100644
--- a/pkg/analyzer/test/src/dart/resolution/instance_creation_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/instance_creation_test.dart
@@ -656,11 +656,11 @@
argumentList: ArgumentList
leftParenthesis: (
rightParenthesis: )
- parameter: <null>
staticInvokeType: C? Function()
staticType: C?
typeArgumentTypes
C?
+ parameter: self::@class::X::@constructor::•::@parameter::c
MethodInvocation
methodName: SimpleIdentifier
token: g2
@@ -689,11 +689,11 @@
argumentList: ArgumentList
leftParenthesis: (
rightParenthesis: )
- parameter: <null>
staticInvokeType: D? Function()
staticType: D?
typeArgumentTypes
D?
+ parameter: self::@class::X::@constructor::•::@parameter::d
rightParenthesis: )
staticType: X
''');
diff --git a/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart b/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
index aa551dd..25e09df 100644
--- a/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/method_invocation_test.dart
@@ -702,11 +702,11 @@
argumentList: ArgumentList
leftParenthesis: (
rightParenthesis: )
- parameter: <null>
staticInvokeType: C? Function()
staticType: C?
typeArgumentTypes
C?
+ parameter: self::@function::foo::@parameter::c
MethodInvocation
methodName: SimpleIdentifier
token: g2
@@ -735,11 +735,11 @@
argumentList: ArgumentList
leftParenthesis: (
rightParenthesis: )
- parameter: <null>
staticInvokeType: D? Function()
staticType: D?
typeArgumentTypes
D?
+ parameter: self::@function::foo::@parameter::d
rightParenthesis: )
staticInvokeType: void Function(A, B, {C? c, D? d})
staticType: void
@@ -7388,8 +7388,8 @@
colon: :
expression: BooleanLiteral
literal: false
- parameter: <null>
staticType: bool
+ parameter: self::@function::foo::@parameter::b
NamedExpression
name: Label
label: SimpleIdentifier
@@ -7399,8 +7399,8 @@
colon: :
expression: IntegerLiteral
literal: 0
- parameter: <null>
staticType: int
+ parameter: self::@function::foo::@parameter::a
rightParenthesis: )
staticInvokeType: void Function({int? a, bool? b})
staticType: void
@@ -7424,8 +7424,8 @@
colon: :
expression: BooleanLiteral
literal: false
- parameter: <null>
staticType: bool*
+ parameter: self::@function::foo::@parameter::b
NamedExpression
name: Label
label: SimpleIdentifier
@@ -7435,8 +7435,8 @@
colon: :
expression: IntegerLiteral
literal: 0
- parameter: <null>
staticType: int*
+ parameter: self::@function::foo::@parameter::a
rightParenthesis: )
staticInvokeType: void Function({int* a, bool* b})*
staticType: void
diff --git a/pkg/analyzer/test/src/summary/resolved_ast_printer.dart b/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
index 39f28cb..787c85b 100644
--- a/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
+++ b/pkg/analyzer/test/src/summary/resolved_ast_printer.dart
@@ -830,6 +830,7 @@
_writeln('NamedExpression');
_withIndent(() {
_writeNamedChildEntities(node);
+ _writeParameterElement(node);
});
}
@@ -1461,8 +1462,7 @@
if (parent is ArgumentList ||
parent is AssignmentExpression && parent.rightHandSide == node ||
parent is BinaryExpression && parent.rightOperand == node ||
- parent is IndexExpression && parent.index == node ||
- parent is NamedExpression && parent.expression == node) {
+ parent is IndexExpression && parent.index == node) {
_writeElement('parameter', node.staticParameterElement);
}
}
diff --git a/pkg/compiler/lib/src/inferrer/engine.dart b/pkg/compiler/lib/src/inferrer/engine.dart
index 65036f5..d3aeab1 100644
--- a/pkg/compiler/lib/src/inferrer/engine.dart
+++ b/pkg/compiler/lib/src/inferrer/engine.dart
@@ -261,10 +261,6 @@
info.bailedOut = false;
info.elementType.inferred = true;
- if (abstractValueDomain.isSpecializationOf(
- info.originalType, abstractValueDomain.fixedListType)) {
- info.checksGrowable = tracer.callsGrowableMethod;
- }
tracer.inputs.forEach(info.elementType.addInput);
// Enqueue the list for later refinement
_workQueue.add(info);
diff --git a/pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart b/pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart
index 9e62daa..923e556 100644
--- a/pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart
+++ b/pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart
@@ -161,13 +161,8 @@
});
Map<ir.TreeNode, AbstractValue> allocatedLists = {};
- Set<ir.TreeNode> checkedForGrowableLists = {};
inferrer.types.allocatedLists
.forEach((ir.TreeNode node, ListTypeInformation typeInformation) {
- ListTypeInformation info = inferrer.types.allocatedLists[node];
- if (info.checksGrowable) {
- checkedForGrowableLists.add(node);
- }
allocatedLists[node] = typeInformation.type;
});
@@ -177,7 +172,6 @@
_inferredDataBuilder.close(closedWorld),
memberResults,
parameterResults,
- checkedForGrowableLists,
inferrer.returnsListElementTypeSet,
allocatedLists);
diff --git a/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart b/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
index 87345f4..ea0f69f 100644
--- a/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
+++ b/pkg/compiler/lib/src/inferrer/type_graph_nodes.dart
@@ -1757,10 +1757,6 @@
/// The length after the container has been traced.
int inferredLength;
- /// Whether this list goes through a growable check.
- /// We conservatively assume it does.
- bool checksGrowable = true;
-
ListTypeInformation(
AbstractValueDomain abstractValueDomain,
MemberTypeInformation context,
diff --git a/pkg/compiler/lib/src/inferrer/types.dart b/pkg/compiler/lib/src/inferrer/types.dart
index e065188..92ee1c5 100644
--- a/pkg/compiler/lib/src/inferrer/types.dart
+++ b/pkg/compiler/lib/src/inferrer/types.dart
@@ -146,10 +146,6 @@
/// the given [receiver] type.
AbstractValue resultTypeOfSelector(Selector selector, AbstractValue receiver);
- /// Returns whether a fixed-length constructor call goes through a growable
- /// check.
- bool isFixedArrayCheckedForGrowable(ir.TreeNode node);
-
/// Returns the type of a list new expression [node]. Returns `null` if
/// [node] does not represent the construction of a new list.
AbstractValue typeOfNewList(ir.TreeNode node);
@@ -225,7 +221,6 @@
final Map<MemberEntity, GlobalTypeInferenceMemberResult> memberResults;
final Map<Local, AbstractValue> parameterResults;
- final Set<ir.TreeNode> checkedForGrowableLists;
final Set<Selector> returnsListElementTypeSet;
final Map<ir.TreeNode, AbstractValue> _allocatedLists;
@@ -235,7 +230,6 @@
this.inferredData,
this.memberResults,
this.parameterResults,
- this.checkedForGrowableLists,
this.returnsListElementTypeSet,
this._allocatedLists)
: _deadFieldResult =
@@ -262,7 +256,6 @@
Map<Local, AbstractValue> parameterResults = source.readLocalMap(() =>
closedWorld.abstractValueDomain
.readAbstractValueFromDataSource(source));
- Set<ir.TreeNode> checkedForGrowableLists = source.readTreeNodes().toSet();
Set<Selector> returnsListElementTypeSet =
source.readList(() => Selector.readFromDataSource(source)).toSet();
Map<ir.TreeNode, AbstractValue> allocatedLists = source.readTreeNodeMap(
@@ -275,7 +268,6 @@
inferredData,
memberResults,
parameterResults,
- checkedForGrowableLists,
returnsListElementTypeSet,
allocatedLists);
}
@@ -295,7 +287,6 @@
parameterResults,
(AbstractValue value) => closedWorld.abstractValueDomain
.writeAbstractValueToDataSink(sink, value));
- sink.writeTreeNodes(checkedForGrowableLists);
sink.writeList(returnsListElementTypeSet,
(Selector selector) => selector.writeToDataSink(sink));
sink.writeTreeNodeMap(
@@ -407,14 +398,6 @@
}
}
- /// Returns whether a fixed-length constructor call goes through a growable
- /// check.
- // TODO(sigmund): move into the result of the element containing such
- // constructor call.
- @override
- bool isFixedArrayCheckedForGrowable(ir.Node ctorCall) =>
- checkedForGrowableLists.contains(ctorCall);
-
@override
AbstractValue typeOfNewList(ir.Node node) => _allocatedLists[node];
@@ -508,9 +491,6 @@
}
@override
- bool isFixedArrayCheckedForGrowable(ir.Node node) => false;
-
- @override
AbstractValue resultTypeOfSelector(Selector selector, AbstractValue mask) {
return closedWorld.abstractValueDomain.dynamicType;
}
diff --git a/pkg/compiler/lib/src/ssa/builder.dart b/pkg/compiler/lib/src/ssa/builder.dart
index 03d96d5..0c073db 100644
--- a/pkg/compiler/lib/src/ssa/builder.dart
+++ b/pkg/compiler/lib/src/ssa/builder.dart
@@ -4082,16 +4082,13 @@
canThrow ? NativeThrowBehavior.MAY : NativeThrowBehavior.NEVER)
..sourceInformation = sourceInformation;
push(foreign);
- // TODO(redemption): Global type analysis tracing may have determined that
- // the fixed-length property is never checked. If so, we can avoid marking
- // the array.
- {
- js.Template code = js.js.parseForeignJS(r'#.fixed$length = Array');
- // We set the instruction as [canThrow] to avoid it being dead code.
- // We need a finer grained side effect.
- add(HForeignCode(code, _abstractValueDomain.nullType, [stack.last],
- throwBehavior: NativeThrowBehavior.MAY));
- }
+ js.Template fixedLengthMarker =
+ js.js.parseForeignJS(r'#.fixed$length = Array');
+ // We set the instruction as [canThrow] to avoid it being dead code.
+ // We need a finer grained side effect.
+ add(HForeignCode(
+ fixedLengthMarker, _abstractValueDomain.nullType, [stack.last],
+ throwBehavior: NativeThrowBehavior.MAY));
HInstruction newInstance = stack.last;
diff --git a/pkg/front_end/test/fasta/testing/suite.dart b/pkg/front_end/test/fasta/testing/suite.dart
index a72f199..2ed7f4c 100644
--- a/pkg/front_end/test/fasta/testing/suite.dart
+++ b/pkg/front_end/test/fasta/testing/suite.dart
@@ -66,7 +66,6 @@
import 'package:front_end/src/fasta/util/parser_ast_helper.dart';
import 'package:kernel/ast.dart'
show
- AwaitExpression,
BasicLiteral,
Class,
Component,
@@ -87,9 +86,7 @@
TreeNode,
UnevaluatedConstant,
VariableDeclaration,
- Version,
- Visitor,
- VisitorVoidMixin;
+ Version;
import 'package:kernel/binary/ast_to_binary.dart' show BinaryPrinter;
import 'package:kernel/class_hierarchy.dart' show ClassHierarchy;
import 'package:kernel/core_types.dart' show CoreTypes;
@@ -2421,13 +2418,6 @@
backendTarget.performModularTransformations = false;
}
}
- List<String> errors = VerifyTransformed.verify(component, backendTarget);
- if (errors.isNotEmpty) {
- return new Result<ComponentResult>(
- result,
- context.expectationSet["TransformVerificationError"],
- errors.join('\n'));
- }
if (backendTarget is TestTarget &&
backendTarget.hasGlobalTransformation) {
component =
@@ -2492,34 +2482,6 @@
}
}
-/// Visitor that checks that the component has been transformed properly.
-// TODO(johnniwinther): Add checks for all nodes that are unsupported after
-// transformation.
-class VerifyTransformed extends Visitor<void> with VisitorVoidMixin {
- final Target target;
- List<String> errors = [];
-
- VerifyTransformed(this.target);
-
- @override
- void defaultNode(Node node) {
- node.visitChildren(this);
- }
-
- @override
- void visitAwaitExpression(AwaitExpression node) {
- if (target is VmTarget) {
- errors.add("ERROR: Untransformed await expression: $node");
- }
- }
-
- static List<String> verify(Component component, Target target) {
- VerifyTransformed visitor = new VerifyTransformed(target);
- component.accept(visitor);
- return visitor.errors;
- }
-}
-
mixin TestTarget on Target {
bool performModularTransformations = false;
diff --git a/pkg/front_end/testcases/extensions/async_extensions.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/async_extensions.dart.weak.transformed.expect
index 66e1488..1ed196c 100644
--- a/pkg/front_end/testcases/extensions/async_extensions.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/async_extensions.dart.weak.transformed.expect
@@ -1,7 +1,6 @@
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-import "dart:async" as asy;
extension Extension on core::int {
method syncStarMethod = self::Extension|syncStarMethod;
@@ -25,58 +24,10 @@
}
static method Extension|get#syncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|syncStarMethod(#this);
-static method Extension|asyncMethod(lowered final core::int #this) → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
+static method Extension|asyncMethod(lowered final core::int #this) → dynamic async /* futureValueType= dynamic */ {}
static method Extension|get#asyncMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncMethod(#this);
-static method Extension|asyncStarMethod(lowered final core::int #this) → dynamic /* originally async* */ {
- asy::_AsyncStarStreamController<dynamic>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L2:
- {}
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
- return :controller_stream;
-}
+static method Extension|asyncStarMethod(lowered final core::int #this) → dynamic async* {}
static method Extension|get#asyncStarMethod(lowered final core::int #this) → () → dynamic
return () → dynamic => self::Extension|asyncStarMethod(#this);
static method main() → dynamic {
diff --git a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.transformed.expect
index 484ac66..f3e3b49 100644
--- a/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/deferred_explicit_access.dart.weak.transformed.expect
@@ -8,47 +8,21 @@
// ^
//
import self as self;
-import "dart:async" as asy;
import "dart:core" as core;
import "deferred_explicit_access_lib.dart" as def;
import "org-dartlang-testcase:///deferred_explicit_access_lib.dart" deferred as prefix;
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(LoadLibrary(prefix), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- self::expect(0, let final core::Object* #t2 = CheckLibraryIsLoaded(prefix) in def::Extension|staticField);
- self::expect(0, let final core::Object* #t3 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(0));
- self::expect(42, let final core::Object* #t4 = CheckLibraryIsLoaded(prefix) in let final core::int #t5 = 0 in let final core::int #t6 = 42 in let final void #t7 = def::Extension|set#property(#t5, #t6) in #t6);
- self::expect(84, let final core::Object* #t8 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(42));
- self::expect(85, let final core::Object* #t9 = CheckLibraryIsLoaded(prefix) in def::Extension|method(43));
- self::expect(42, let final core::Object* #t10 = CheckLibraryIsLoaded(prefix) in def::Extension|staticProperty);
- self::expect(87, let final core::Object* #t11 = CheckLibraryIsLoaded(prefix) in def::Extension|staticProperty = 87);
- self::expect(87, let final core::Object* #t12 = CheckLibraryIsLoaded(prefix) in def::Extension|staticMethod());
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ await LoadLibrary(prefix);
+ self::expect(0, let final core::Object* #t1 = CheckLibraryIsLoaded(prefix) in def::Extension|staticField);
+ self::expect(0, let final core::Object* #t2 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(0));
+ self::expect(42, let final core::Object* #t3 = CheckLibraryIsLoaded(prefix) in let final core::int #t4 = 0 in let final core::int #t5 = 42 in let final void #t6 = def::Extension|set#property(#t4, #t5) in #t5);
+ self::expect(84, let final core::Object* #t7 = CheckLibraryIsLoaded(prefix) in def::Extension|get#property(42));
+ self::expect(85, let final core::Object* #t8 = CheckLibraryIsLoaded(prefix) in def::Extension|method(43));
+ self::expect(42, let final core::Object* #t9 = CheckLibraryIsLoaded(prefix) in def::Extension|staticProperty);
+ self::expect(87, let final core::Object* #t10 = CheckLibraryIsLoaded(prefix) in def::Extension|staticProperty = 87);
+ self::expect(87, let final core::Object* #t11 = CheckLibraryIsLoaded(prefix) in def::Extension|staticMethod());
}
static method expect(dynamic expected, dynamic actual) → dynamic {
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
@@ -100,4 +74,4 @@
Evaluated: VariableGet @ org-dartlang-testcase:///deferred_explicit_access.dart:12:31 -> IntConstant(0)
Evaluated: VariableGet @ org-dartlang-testcase:///deferred_explicit_access.dart:12:45 -> IntConstant(42)
Evaluated: VariableGet @ org-dartlang-testcase:///deferred_explicit_access.dart:12:45 -> IntConstant(42)
-Extra constant evaluation: evaluated: 91, effectively constant: 3
+Extra constant evaluation: evaluated: 68, effectively constant: 3
diff --git a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.transformed.expect
index 3769826..bd0fcbf 100644
--- a/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/extensions/deferred_import_hidden.dart.weak.transformed.expect
@@ -1,45 +1,19 @@
library /*isNonNullableByDefault*/;
import self as self;
-import "dart:async" as asy;
import "dart:core" as core;
import "deferred_explicit_access_lib.dart" as def;
import "org-dartlang-testcase:///deferred_explicit_access_lib.dart" deferred as prefix hide Extension;
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(LoadLibrary(prefix), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- self::expect(0, let final core::Object* #t2 = CheckLibraryIsLoaded(prefix) in def::topLevelField);
- self::expect(42, let final core::Object* #t3 = CheckLibraryIsLoaded(prefix) in def::topLevelField = 42);
- self::expect(42, let final core::Object* #t4 = CheckLibraryIsLoaded(prefix) in def::topLevelField);
- self::expect(0, let final core::Object* #t5 = CheckLibraryIsLoaded(prefix) in def::topLevelProperty);
- self::expect(87, let final core::Object* #t6 = CheckLibraryIsLoaded(prefix) in def::topLevelProperty = 87);
- self::expect(87, let final core::Object* #t7 = CheckLibraryIsLoaded(prefix) in def::topLevelProperty);
- self::expect(87, let final core::Object* #t8 = CheckLibraryIsLoaded(prefix) in def::topLevelMethod());
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ await LoadLibrary(prefix);
+ self::expect(0, let final core::Object* #t1 = CheckLibraryIsLoaded(prefix) in def::topLevelField);
+ self::expect(42, let final core::Object* #t2 = CheckLibraryIsLoaded(prefix) in def::topLevelField = 42);
+ self::expect(42, let final core::Object* #t3 = CheckLibraryIsLoaded(prefix) in def::topLevelField);
+ self::expect(0, let final core::Object* #t4 = CheckLibraryIsLoaded(prefix) in def::topLevelProperty);
+ self::expect(87, let final core::Object* #t5 = CheckLibraryIsLoaded(prefix) in def::topLevelProperty = 87);
+ self::expect(87, let final core::Object* #t6 = CheckLibraryIsLoaded(prefix) in def::topLevelProperty);
+ self::expect(87, let final core::Object* #t7 = CheckLibraryIsLoaded(prefix) in def::topLevelMethod());
}
static method expect(dynamic expected, dynamic actual) → dynamic {
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
diff --git a/pkg/front_end/testcases/general/async_function.dart.weak.transformed.expect b/pkg/front_end/testcases/general/async_function.dart.weak.transformed.expect
index aea2b09..55fe823 100644
--- a/pkg/front_end/testcases/general/async_function.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/async_function.dart.weak.transformed.expect
@@ -2,64 +2,15 @@
import self as self;
import "dart:async" as asy;
import "dart:core" as core;
-import "dart:_internal" as _in;
import "dart:async";
static field core::List<core::String> stringList = core::_GrowableList::_literal1<core::String>("bar");
-static method asyncString() → asy::Future<core::String> /* futureValueType= core::String */ /* originally async */ {
- final asy::_Future<core::String> :async_future = new asy::_Future::•<core::String>();
- core::bool* :is_sync = false;
- core::String? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = "foo";
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method asyncString() → asy::Future<core::String> async /* futureValueType= core::String */ {
+ return "foo";
}
-static method asyncString2() → asy::Future<core::String> /* futureValueType= core::String */ /* originally async */ {
- final asy::_Future<core::String> :async_future = new asy::_Future::•<core::String>();
- core::bool* :is_sync = false;
- FutureOr<core::String>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = self::asyncString();
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method asyncString2() → asy::Future<core::String> async /* futureValueType= core::String */ {
+ return self::asyncString();
}
static method syncStarString() → core::Iterable<core::String> /* originally sync* */ {
function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
@@ -103,106 +54,14 @@
}
return new core::_SyncIterable::•<core::String>(:sync_op_gen);
}
-static method asyncStarString() → asy::Stream<core::String> /* originally async* */ {
- asy::_AsyncStarStreamController<core::String>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L3:
- {
- if(:controller.{asy::_AsyncStarStreamController::add}("foo"){(core::String) → core::bool})
- return null;
- else
- [yield] null;
- :controller.{asy::_AsyncStarStreamController::addStream}(self::asyncStarString2()){(asy::Stream<core::String>) → void};
- [yield] null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- return null;
- [yield] let dynamic #t1 = asy::_awaitHelper(self::asyncString(), :async_op_then, :async_op_error) in null;
- if(:controller.{asy::_AsyncStarStreamController::add}(_in::unsafeCast<core::String>(:result_or_exception)){(core::String) → core::bool})
- return null;
- else
- [yield] null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::String>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::String>};
- return :controller_stream;
+static method asyncStarString() → asy::Stream<core::String> async* {
+ yield "foo";
+ yield* self::asyncStarString2();
+ yield await self::asyncString();
}
-static method asyncStarString2() → asy::Stream<core::String> /* originally async* */ {
- asy::_AsyncStarStreamController<core::String>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L4:
- {
- if(:controller.{asy::_AsyncStarStreamController::add}("bar"){(core::String) → core::bool})
- return null;
- else
- [yield] null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::String>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::String>};
- return :controller_stream;
+static method asyncStarString2() → asy::Stream<core::String> async* {
+ yield "bar";
}
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- [yield] let dynamic #t2 = asy::_awaitHelper(self::asyncString(), :async_op_then, :async_op_error) in null;
- core::String str = _in::unsafeCast<core::String>(:result_or_exception);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ core::String str = await self::asyncString();
}
diff --git a/pkg/front_end/testcases/general/async_function_returns_future_or.dart.weak.transformed.expect b/pkg/front_end/testcases/general/async_function_returns_future_or.dart.weak.transformed.expect
index f6fb0b0..46f8ed8 100644
--- a/pkg/front_end/testcases/general/async_function_returns_future_or.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/async_function_returns_future_or.dart.weak.transformed.expect
@@ -2,385 +2,42 @@
import self as self;
import "dart:async" as asy;
import "dart:core" as core;
-import "dart:_internal" as _in;
import "dart:async";
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(self::returnsString(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<core::String>(:result_or_exception);
- [yield] let dynamic #t2 = asy::_awaitHelper(self::returnsFutureOrString(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<core::String>(:result_or_exception);
- [yield] let dynamic #t3 = asy::_awaitHelper(self::returnsAwaitFutureOrString(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<core::String>(:result_or_exception);
- [yield] let dynamic #t4 = asy::_awaitHelper(self::returnsFutureString(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<core::String>(:result_or_exception);
- [yield] let dynamic #t5 = asy::_awaitHelper(self::returnsAwaitFutureString(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<core::String>(:result_or_exception);
- [yield] let dynamic #t6 = asy::_awaitHelper(self::returnsObject(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<core::Object>(:result_or_exception);
- [yield] let dynamic #t7 = asy::_awaitHelper(self::returnsFutureOrObject(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<core::Object>(:result_or_exception);
- [yield] let dynamic #t8 = asy::_awaitHelper(self::returnsAwaitFutureOrObject(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<core::Object>(:result_or_exception);
- [yield] let dynamic #t9 = asy::_awaitHelper(self::returnsFutureObject(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<core::Object>(:result_or_exception);
- [yield] let dynamic #t10 = asy::_awaitHelper(self::returnsAwaitFutureObject(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<core::Object>(:result_or_exception);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ await self::returnsString();
+ await self::returnsFutureOrString();
+ await self::returnsAwaitFutureOrString();
+ await self::returnsFutureString();
+ await self::returnsAwaitFutureString();
+ await self::returnsObject();
+ await self::returnsFutureOrObject();
+ await self::returnsAwaitFutureOrObject();
+ await self::returnsFutureObject();
+ await self::returnsAwaitFutureObject();
}
-static method returnsString() → asy::Future<core::String> /* futureValueType= core::String */ /* originally async */ {
- final asy::_Future<core::String> :async_future = new asy::_Future::•<core::String>();
- core::bool* :is_sync = false;
- core::String? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = "a";
- break #L2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnsFutureOrString() → asy::Future<core::String> /* futureValueType= core::String */ /* originally async */ {
- final asy::_Future<core::String> :async_future = new asy::_Future::•<core::String>();
- core::bool* :is_sync = false;
- FutureOr<core::String>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- :return_value = self::getFutureOr<core::String>("a");
- break #L3;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnsAwaitFutureOrString() → asy::Future<core::String> /* futureValueType= core::String */ /* originally async */ {
- final asy::_Future<core::String> :async_future = new asy::_Future::•<core::String>();
- core::bool* :is_sync = false;
- core::String? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- [yield] let dynamic #t11 = asy::_awaitHelper(self::getFutureOr<core::String>("a"), :async_op_then, :async_op_error) in null;
- :return_value = _in::unsafeCast<core::String>(:result_or_exception);
- break #L4;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnsFutureString() → asy::Future<core::String> /* futureValueType= core::String */ /* originally async */ {
- final asy::_Future<core::String> :async_future = new asy::_Future::•<core::String>();
- core::bool* :is_sync = false;
- FutureOr<core::String>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- :return_value = self::getFuture<core::String>("a");
- break #L5;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnsAwaitFutureString() → FutureOr<core::String> /* futureValueType= core::String */ /* originally async */ {
- final asy::_Future<core::String> :async_future = new asy::_Future::•<core::String>();
- core::bool* :is_sync = false;
- core::String? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L6:
- {
- [yield] let dynamic #t12 = asy::_awaitHelper(self::getFuture<core::String>("a"), :async_op_then, :async_op_error) in null;
- :return_value = _in::unsafeCast<core::String>(:result_or_exception);
- break #L6;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnsObject() → asy::Future<core::Object> /* futureValueType= core::Object */ /* originally async */ {
- final asy::_Future<core::Object> :async_future = new asy::_Future::•<core::Object>();
- core::bool* :is_sync = false;
- FutureOr<core::Object>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L7:
- {
- :return_value = new core::Object::•();
- break #L7;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnsFutureOrObject() → asy::Future<core::Object> /* futureValueType= core::Object */ /* originally async */ {
- final asy::_Future<core::Object> :async_future = new asy::_Future::•<core::Object>();
- core::bool* :is_sync = false;
- FutureOr<core::Object>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L8:
- {
- :return_value = self::getFutureOr<core::Object>(new core::Object::•());
- break #L8;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnsAwaitFutureOrObject() → asy::Future<core::Object> /* futureValueType= core::Object */ /* originally async */ {
- final asy::_Future<core::Object> :async_future = new asy::_Future::•<core::Object>();
- core::bool* :is_sync = false;
- FutureOr<core::Object>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L9:
- {
- [yield] let dynamic #t13 = asy::_awaitHelper(self::getFutureOr<core::Object>(new core::Object::•()), :async_op_then, :async_op_error) in null;
- :return_value = _in::unsafeCast<core::Object>(:result_or_exception);
- break #L9;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnsFutureObject() → asy::Future<core::Object> /* futureValueType= core::Object */ /* originally async */ {
- final asy::_Future<core::Object> :async_future = new asy::_Future::•<core::Object>();
- core::bool* :is_sync = false;
- FutureOr<core::Object>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L10:
- {
- :return_value = self::getFuture<core::Object>(new core::Object::•());
- break #L10;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnsAwaitFutureObject() → FutureOr<core::Object> /* futureValueType= core::Object */ /* originally async */ {
- final asy::_Future<core::Object> :async_future = new asy::_Future::•<core::Object>();
- core::bool* :is_sync = false;
- FutureOr<core::Object>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L11:
- {
- [yield] let dynamic #t14 = asy::_awaitHelper(self::getFuture<core::Object>(new core::Object::•()), :async_op_then, :async_op_error) in null;
- :return_value = _in::unsafeCast<core::Object>(:result_or_exception);
- break #L11;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method getFutureOr<T extends core::Object? = dynamic>(self::getFutureOr::T% v) → FutureOr<self::getFutureOr::T%> /* futureValueType= self::getFutureOr::T% */ /* originally async */ {
- final asy::_Future<self::getFutureOr::T%> :async_future = new asy::_Future::•<self::getFutureOr::T%>();
- core::bool* :is_sync = false;
- FutureOr<self::getFutureOr::T%>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L12:
- {
- :return_value = v;
- break #L12;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method getFuture<T extends core::Object? = dynamic>(self::getFuture::T% v) → asy::Future<self::getFuture::T%> /* futureValueType= self::getFuture::T% */ /* originally async */ {
- final asy::_Future<self::getFuture::T%> :async_future = new asy::_Future::•<self::getFuture::T%>();
- core::bool* :is_sync = false;
- FutureOr<self::getFuture::T%>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L13:
- {
- :return_value = v;
- break #L13;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
+static method returnsString() → asy::Future<core::String> async /* futureValueType= core::String */
+ return "a";
+static method returnsFutureOrString() → asy::Future<core::String> async /* futureValueType= core::String */
+ return self::getFutureOr<core::String>("a");
+static method returnsAwaitFutureOrString() → asy::Future<core::String> async /* futureValueType= core::String */
+ return await self::getFutureOr<core::String>("a");
+static method returnsFutureString() → asy::Future<core::String> async /* futureValueType= core::String */
+ return self::getFuture<core::String>("a");
+static method returnsAwaitFutureString() → FutureOr<core::String> async /* futureValueType= core::String */
+ return await self::getFuture<core::String>("a");
+static method returnsObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
+ return new core::Object::•();
+static method returnsFutureOrObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
+ return self::getFutureOr<core::Object>(new core::Object::•());
+static method returnsAwaitFutureOrObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
+ return await self::getFutureOr<core::Object>(new core::Object::•());
+static method returnsFutureObject() → asy::Future<core::Object> async /* futureValueType= core::Object */
+ return self::getFuture<core::Object>(new core::Object::•());
+static method returnsAwaitFutureObject() → FutureOr<core::Object> async /* futureValueType= core::Object */
+ return await self::getFuture<core::Object>(new core::Object::•());
+static method getFutureOr<T extends core::Object? = dynamic>(self::getFutureOr::T% v) → FutureOr<self::getFutureOr::T%> async /* futureValueType= self::getFutureOr::T% */
+ return v;
+static method getFuture<T extends core::Object? = dynamic>(self::getFuture::T% v) → asy::Future<self::getFuture::T%> async /* futureValueType= self::getFuture::T% */
+ return v;
diff --git a/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.weak.transformed.expect b/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.weak.transformed.expect
index eaa793aa..2acbe0f 100644
--- a/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/async_method_with_invalid_type.dart.weak.transformed.expect
@@ -7,33 +7,9 @@
// ^^^
//
import self as self;
-import "dart:async" as asy;
-import "dart:core" as core;
-static method foo() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- invalid-type x;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method foo() → dynamic async /* futureValueType= dynamic */ {
+ invalid-type x;
+ invalid-expression "Invalid iterable type in for-in";
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/async_nested.dart.weak.transformed.expect b/pkg/front_end/testcases/general/async_nested.dart.weak.transformed.expect
index e7662de..05ca060 100644
--- a/pkg/front_end/testcases/general/async_nested.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/async_nested.dart.weak.transformed.expect
@@ -2,7 +2,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -18,52 +17,14 @@
return "${this.{self::Node::name}{core::String}} ${let final core::Iterable<dynamic>? #t3 = tmp in #t3 == null ?{core::String?} null : #t3{core::Iterable<dynamic>}.{core::Iterable::join}(" "){([core::String]) → core::String}}".{core::String::trim}(){() → core::String};
}
}
-static method main() → void /* futureValueType= void */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- self::Node :async_temporary_0;
- self::Node :async_temporary_1;
- self::Node :async_temporary_2;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- core::String expected = "1 2 3 4 5 6 7 8 9 10";
- :async_temporary_2 = new self::Node::•("2", core::_GrowableList::•<self::Node>(0));
- [yield] let dynamic #t4 = asy::_awaitHelper(asy::Future::value<self::Node>(new self::Node::•("7", core::_GrowableList::•<self::Node>(0))), :async_op_then, :async_op_error) in null;
- [yield] let dynamic #t5 = asy::_awaitHelper(asy::Future::value<self::Node>(new self::Node::•("6", core::_GrowableList::_literal1<self::Node>(_in::unsafeCast<self::Node>(:result_or_exception)))), :async_op_then, :async_op_error) in null;
- :async_temporary_1 = _in::unsafeCast<self::Node>(:result_or_exception);
- [yield] let dynamic #t6 = asy::_awaitHelper(asy::Future::value<self::Node>(new self::Node::•("8", core::_GrowableList::•<self::Node>(0))), :async_op_then, :async_op_error) in null;
- :async_temporary_0 = _in::unsafeCast<self::Node>(:result_or_exception);
- [yield] let dynamic #t7 = asy::_awaitHelper(asy::Future::value<self::Node>(new self::Node::•("9", core::_GrowableList::•<self::Node>(0))), :async_op_then, :async_op_error) in null;
- [yield] let dynamic #t8 = asy::_awaitHelper(asy::Future::value<self::Node>(new self::Node::•("4", core::_GrowableList::_literal1<self::Node>(new self::Node::•("5", core::_GrowableList::_literal3<self::Node>(_in::unsafeCast<self::Node>(:async_temporary_1), _in::unsafeCast<self::Node>(:async_temporary_0), _in::unsafeCast<self::Node>(:result_or_exception)))))), :async_op_then, :async_op_error) in null;
- [yield] let dynamic #t9 = asy::_awaitHelper(asy::Future::value<self::Node>(new self::Node::•("3", core::_GrowableList::_literal1<self::Node>(_in::unsafeCast<self::Node>(:result_or_exception)))), :async_op_then, :async_op_error) in null;
- :async_temporary_0 = _in::unsafeCast<self::Node>(:result_or_exception);
- [yield] let dynamic #t10 = asy::_awaitHelper(asy::Future::value<self::Node>(new self::Node::•("10", core::_GrowableList::•<self::Node>(0))), :async_op_then, :async_op_error) in null;
- self::Node node = new self::Node::•("1", core::_GrowableList::_literal3<self::Node>(_in::unsafeCast<self::Node>(:async_temporary_2), _in::unsafeCast<self::Node>(:async_temporary_0), _in::unsafeCast<self::Node>(:result_or_exception)));
- core::String actual = node.{self::Node::toSimpleString}(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::String;
- core::print(actual);
- if(!(actual =={core::String::==}{(core::Object) → core::bool} expected)) {
- throw "Expected '${expected}' but got '${actual}'";
- }
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → void async /* futureValueType= void */ {
+ core::String expected = "1 2 3 4 5 6 7 8 9 10";
+ self::Node node = new self::Node::•("1", core::_GrowableList::_literal3<self::Node>(new self::Node::•("2", core::_GrowableList::•<self::Node>(0)), await asy::Future::value<self::Node>(new self::Node::•("3", core::_GrowableList::_literal1<self::Node>(await asy::Future::value<self::Node>(new self::Node::•("4", core::_GrowableList::_literal1<self::Node>(new self::Node::•("5", core::_GrowableList::_literal3<self::Node>(await asy::Future::value<self::Node>(new self::Node::•("6", core::_GrowableList::_literal1<self::Node>(await asy::Future::value<self::Node>(new self::Node::•("7", core::_GrowableList::•<self::Node>(0)))))), await asy::Future::value<self::Node>(new self::Node::•("8", core::_GrowableList::•<self::Node>(0))), await asy::Future::value<self::Node>(new self::Node::•("9", core::_GrowableList::•<self::Node>(0))))))))))), await asy::Future::value<self::Node>(new self::Node::•("10", core::_GrowableList::•<self::Node>(0)))));
+ core::String actual = node.{self::Node::toSimpleString}(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::String;
+ core::print(actual);
+ if(!(actual =={core::String::==}{(core::Object) → core::bool} expected)) {
+ throw "Expected '${expected}' but got '${actual}'";
+ }
}
constants {
diff --git a/pkg/front_end/testcases/general/await.dart.weak.transformed.expect b/pkg/front_end/testcases/general/await.dart.weak.transformed.expect
index 8d16530..c9c78d7 100644
--- a/pkg/front_end/testcases/general/await.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/await.dart.weak.transformed.expect
@@ -1,34 +1,7 @@
library /*isNonNullableByDefault*/;
import self as self;
-import "dart:async" as asy;
import "dart:core" as core;
-import "dart:_internal" as _in;
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper("Hello, World!", :async_op_then, :async_op_error) in null;
- core::print(_in::unsafeCast<core::String>(:result_or_exception));
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ core::print(await "Hello, World!");
}
diff --git a/pkg/front_end/testcases/general/await_complex.dart.weak.transformed.expect b/pkg/front_end/testcases/general/await_complex.dart.weak.transformed.expect
index 7af3671..b8f0235 100644
--- a/pkg/front_end/testcases/general/await_complex.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/await_complex.dart.weak.transformed.expect
@@ -8,8 +8,8 @@
//
import self as self;
import "dart:core" as core;
-import "dart:async" as asy;
import "dart:_internal" as _in;
+import "dart:async" as asy;
import "dart:async";
@@ -53,746 +53,202 @@
}
static method dummy() → dynamic
return 1;
-static method staticMembers() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- core::int :async_temporary_0;
- core::int :async_temporary_1;
- core::int :async_temporary_2;
- core::int :async_temporary_3;
- core::int :async_temporary_4;
- core::int :async_temporary_5;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :async_temporary_0 = self::C::staticField;
- [yield] let dynamic #t1 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- core::num a = _in::unsafeCast<core::int>(:async_temporary_0).{core::num::+}(:result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
- self::expect(2, a);
- :async_temporary_1 = self::C::staticField = 1;
- [yield] let dynamic #t2 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- core::num f = _in::unsafeCast<core::int>(:async_temporary_1).{core::num::+}(:result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
- self::expect(2, f);
- :async_temporary_2 = self::C::staticGetter;
- [yield] let dynamic #t3 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- core::num b = _in::unsafeCast<core::int>(:async_temporary_2).{core::num::+}(:result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
- self::expect(2, b);
- :async_temporary_3 = self::C::staticSetter = 1;
- [yield] let dynamic #t4 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- core::num c = _in::unsafeCast<core::int>(:async_temporary_3).{core::num::+}(:result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
- self::expect(2, c);
- :async_temporary_4 = self::C::staticFoo(2);
- [yield] let dynamic #t5 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- core::num d = _in::unsafeCast<core::int>(:async_temporary_4).{core::num::+}(:result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
- self::expect(3, d);
- :async_temporary_5 = self::C::staticField.{core::num::+}(self::C::staticGetter){(core::num) → core::int}.{core::num::+}(self::C::staticSetter = 1){(core::num) → core::int}.{core::num::+}(self::C::staticFoo(1)){(core::num) → core::int};
- [yield] let dynamic #t6 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- core::num e = _in::unsafeCast<core::int>(:async_temporary_5).{core::num::+}(:result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
- self::expect(5, e);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method staticMembers() → dynamic async /* futureValueType= dynamic */ {
+ core::num a = self::C::staticField.{core::num::+}(await self::dummy() as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
+ self::expect(2, a);
+ core::num f = (self::C::staticField = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
+ self::expect(2, f);
+ core::num b = self::C::staticGetter.{core::num::+}(await self::dummy() as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
+ self::expect(2, b);
+ core::num c = (self::C::staticSetter = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
+ self::expect(2, c);
+ core::num d = self::C::staticFoo(2).{core::num::+}(await self::dummy() as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
+ self::expect(3, d);
+ core::num e = self::C::staticField.{core::num::+}(self::C::staticGetter){(core::num) → core::int}.{core::num::+}(self::C::staticSetter = 1){(core::num) → core::int}.{core::num::+}(self::C::staticFoo(1)){(core::num) → core::int}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
+ self::expect(5, e);
}
-static method topLevelMembers() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- core::int :async_temporary_0;
- core::int :async_temporary_1;
- core::int :async_temporary_2;
- core::int :async_temporary_3;
- core::int :async_temporary_4;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :async_temporary_0 = self::globalVariable;
- [yield] let dynamic #t7 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- core::num a = _in::unsafeCast<core::int>(:async_temporary_0).{core::num::+}(:result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
- self::expect(2, a);
- :async_temporary_1 = self::topLevelGetter;
- [yield] let dynamic #t8 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- core::num b = _in::unsafeCast<core::int>(:async_temporary_1).{core::num::+}(:result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
- self::expect(2, b);
- :async_temporary_2 = self::topLevelSetter = 1;
- [yield] let dynamic #t9 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- core::num c = _in::unsafeCast<core::int>(:async_temporary_2).{core::num::+}(:result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
- self::expect(2, c);
- :async_temporary_3 = self::topLevelFoo(1);
- [yield] let dynamic #t10 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- core::num d = _in::unsafeCast<core::int>(:async_temporary_3).{core::num::+}(:result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
- self::expect(2, d);
- :async_temporary_4 = self::globalVariable.{core::num::+}(self::topLevelGetter){(core::num) → core::int}.{core::num::+}(self::topLevelSetter = 1){(core::num) → core::int}.{core::num::+}(self::topLevelFoo(1)){(core::num) → core::int};
- [yield] let dynamic #t11 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- core::num e = _in::unsafeCast<core::int>(:async_temporary_4).{core::num::+}(:result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
- self::expect(5, e);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method topLevelMembers() → dynamic async /* futureValueType= dynamic */ {
+ core::num a = self::globalVariable.{core::num::+}(await self::dummy() as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
+ self::expect(2, a);
+ core::num b = self::topLevelGetter.{core::num::+}(await self::dummy() as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
+ self::expect(2, b);
+ core::num c = (self::topLevelSetter = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
+ self::expect(2, c);
+ core::num d = self::topLevelFoo(1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
+ self::expect(2, d);
+ core::num e = self::globalVariable.{core::num::+}(self::topLevelGetter){(core::num) → core::int}.{core::num::+}(self::topLevelSetter = 1){(core::num) → core::int}.{core::num::+}(self::topLevelFoo(1)){(core::num) → core::int}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
+ self::expect(5, e);
}
-static method instanceMembers() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- core::int :async_temporary_0;
- core::int :async_temporary_1;
- core::int :async_temporary_2;
- core::int :async_temporary_3;
- core::int :async_temporary_4;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- self::C inst = new self::C::•();
- :async_temporary_0 = inst.{self::C::field}{core::int};
- [yield] let dynamic #t12 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- core::num a = _in::unsafeCast<core::int>(:async_temporary_0).{core::num::+}(:result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
- self::expect(2, a);
- :async_temporary_1 = inst.{self::C::getter}{core::int};
- [yield] let dynamic #t13 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- core::num b = _in::unsafeCast<core::int>(:async_temporary_1).{core::num::+}(:result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
- self::expect(2, b);
- :async_temporary_2 = inst.{self::C::setter} = 1;
- [yield] let dynamic #t14 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- core::num c = _in::unsafeCast<core::int>(:async_temporary_2).{core::num::+}(:result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
- self::expect(2, c);
- :async_temporary_3 = inst.{self::C::foo}(1){(core::int) → core::int};
- [yield] let dynamic #t15 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- core::num d = _in::unsafeCast<core::int>(:async_temporary_3).{core::num::+}(:result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
- self::expect(2, d);
- :async_temporary_4 = inst.{self::C::field}{core::int}.{core::num::+}(inst.{self::C::getter}{core::int}){(core::num) → core::int}.{core::num::+}(inst.{self::C::setter} = 1){(core::num) → core::int}.{core::num::+}(inst.{self::C::foo}(1){(core::int) → core::int}){(core::num) → core::int};
- [yield] let dynamic #t16 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- core::num e = _in::unsafeCast<core::int>(:async_temporary_4).{core::num::+}(:result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
- self::expect(5, e);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method instanceMembers() → dynamic async /* futureValueType= dynamic */ {
+ self::C inst = new self::C::•();
+ core::num a = inst.{self::C::field}{core::int}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
+ self::expect(2, a);
+ core::num b = inst.{self::C::getter}{core::int}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
+ self::expect(2, b);
+ core::num c = (inst.{self::C::setter} = 1).{core::num::+}(await self::dummy() as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
+ self::expect(2, c);
+ core::num d = inst.{self::C::foo}(1){(core::int) → core::int}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
+ self::expect(2, d);
+ core::num e = inst.{self::C::field}{core::int}.{core::num::+}(inst.{self::C::getter}{core::int}){(core::num) → core::int}.{core::num::+}(inst.{self::C::setter} = 1){(core::num) → core::int}.{core::num::+}(inst.{self::C::foo}(1){(core::int) → core::int}){(core::num) → core::int}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
+ self::expect(5, e);
}
-static method others() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :async_temporary_0;
- core::int :async_temporary_1;
- core::int :async_temporary_2;
- core::List<core::int> :async_temporary_3;
- core::int :async_temporary_4;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- :async_temporary_0 = self::globalVariable;
- [yield] let dynamic #t17 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- :async_temporary_0 = "${_in::unsafeCast<core::int>(:async_temporary_0)} ${:result_or_exception} ";
- [yield] let dynamic #t18 = asy::_awaitHelper("someString", :async_op_then, :async_op_error) in null;
- core::String a = _in::unsafeCast<core::String>(:async_temporary_0).{core::String::+}(_in::unsafeCast<core::String>(:result_or_exception)){(core::String) → core::String};
- self::expect("1 1 someString", a);
- self::C c = new self::C::•();
- :async_temporary_1 = c.{self::C::field}{core::int};
- [yield] let dynamic #t19 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- core::num d = _in::unsafeCast<core::int>(:async_temporary_1).{core::num::+}(:result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
- core::int cnt = 2;
- core::List<core::int> b = core::_GrowableList::_literal3<core::int>(1, 2, 3);
- :async_temporary_3 = b;
- :async_temporary_2 = cnt;
- [yield] let dynamic #t20 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<core::List<core::int>>(:async_temporary_3).{core::List::[]=}(_in::unsafeCast<core::int>(:async_temporary_2), :result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} core::int){(core::int, core::int) → void};
- self::expect(1, b.{core::List::[]}(cnt){(core::int) → core::int});
- :async_temporary_4 = b.{core::List::[]}(0){(core::int) → core::int};
- [yield] let dynamic #t21 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- core::num e = _in::unsafeCast<core::int>(:async_temporary_4).{core::num::+}(:result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
- self::expect(2, e);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method others() → dynamic async /* futureValueType= dynamic */ {
+ core::String a = "${self::globalVariable} ${await self::dummy()} ".{core::String::+}(await "someString"){(core::String) → core::String};
+ self::expect("1 1 someString", a);
+ self::C c = new self::C::•();
+ core::num d = c.{self::C::field}{core::int}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
+ core::int cnt = 2;
+ core::List<core::int> b = core::_GrowableList::_literal3<core::int>(1, 2, 3);
+ b.{core::List::[]=}(cnt, await self::dummy() as{TypeError,ForDynamic,ForNonNullableByDefault} core::int){(core::int, core::int) → void};
+ self::expect(1, b.{core::List::[]}(cnt){(core::int) → core::int});
+ core::num e = b.{core::List::[]}(0){(core::int) → core::int}.{core::num::+}(await self::dummy() as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::num};
+ self::expect(2, e);
}
-static method conditionals() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- core::bool :async_temporary_0;
- dynamic :async_temporary_1;
- dynamic :async_temporary_2;
- dynamic :async_temporary_3;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- core::bool a = false;
- core::bool b = true;
- :async_temporary_0 = (a || b) =={core::Object::==}{(core::Object) → core::bool} true;
- if(_in::unsafeCast<core::bool>(:async_temporary_0))
- ;
- else {
- [yield] let dynamic #t22 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- :async_temporary_0 = :result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool =={core::Object::==}{(core::Object) → core::bool} true;
- }
- core::bool c = _in::unsafeCast<core::bool>(:async_temporary_0);
- self::expect(true, c);
- if(a || b) {
- :async_temporary_1 = a;
- }
- else {
- [yield] let dynamic #t23 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- :async_temporary_1 = :result_or_exception;
- }
- dynamic d = :async_temporary_1;
- self::expect(false, d);
- if(a is{ForNonNullableByDefault} core::int) {
- [yield] let dynamic #t24 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- :async_temporary_2 = :result_or_exception;
- }
- else {
- :async_temporary_2 = 2;
- }
- dynamic e = :async_temporary_2;
- self::expect(2, e);
- try {
- if(a is{ForNonNullableByDefault} core::int) {
- [yield] let dynamic #t25 = asy::_awaitHelper(self::dummy(), :async_op_then, :async_op_error) in null;
- :async_temporary_3 = :result_or_exception;
- }
- else {
- :async_temporary_3 = 2;
- }
- dynamic f = :async_temporary_3;
- }
- on core::Object catch(final core::Object e) {
- }
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method conditionals() → dynamic async /* futureValueType= dynamic */ {
+ core::bool a = false;
+ core::bool b = true;
+ core::bool c = a || b || await self::dummy() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+ self::expect(true, c);
+ dynamic d = a || b ?{dynamic} a : await self::dummy();
+ self::expect(false, d);
+ dynamic e = a is{ForNonNullableByDefault} core::int ?{dynamic} await self::dummy() : 2;
+ self::expect(2, e);
+ try {
+ dynamic f = a is{ForNonNullableByDefault} core::int ?{dynamic} await self::dummy() : 2;
+ }
+ on core::Object catch(final core::Object e) {
+ }
}
-static method asserts() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L6:
+static method asserts() → dynamic async /* futureValueType= dynamic */ {
+ {
+ core::Iterator<<T extends core::Object? = dynamic>(T%) → FutureOr<T%>> :sync-for-iterator = core::_GrowableList::_literal2<<T extends core::Object? = dynamic>(T%) → FutureOr<T%>>(#C1, #C2).{core::Iterable::iterator}{core::Iterator<<T extends core::Object? = dynamic>(T%) → FutureOr<T%>>};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ final <T extends core::Object? = dynamic>(T%) → FutureOr<T%>func = :sync-for-iterator.{core::Iterator::current}{<T extends core::Object? = dynamic>(T%) → FutureOr<T%>};
{
- {
- core::Iterator<<T extends core::Object? = dynamic>(T%) → FutureOr<T%>> :sync-for-iterator = core::_GrowableList::_literal2<<T extends core::Object? = dynamic>(T%) → FutureOr<T%>>(#C1, #C2).{core::Iterable::iterator}{core::Iterator<<T extends core::Object? = dynamic>(T%) → FutureOr<T%>>};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- final <T extends core::Object? = dynamic>(T%) → FutureOr<T%>func = :sync-for-iterator.{core::Iterator::current}{<T extends core::Object? = dynamic>(T%) → FutureOr<T%>};
- {
- assert {
- [yield] let dynamic #t26 = asy::_awaitHelper(func<core::bool>(true){(core::bool) → FutureOr<core::bool>}, :async_op_then, :async_op_error) in null;
- assert(_in::unsafeCast<core::bool>(:result_or_exception));
- }
- assert {
- if(invalid-expression "pkg/front_end/testcases/general/await_complex.dart:120:12: Error: A value of type 'FutureOr<bool>' can't be assigned to a variable of type 'bool'.
+ assert(await func<core::bool>(true){(core::bool) → FutureOr<core::bool>});
+ assert(invalid-expression "pkg/front_end/testcases/general/await_complex.dart:120:12: Error: A value of type 'FutureOr<bool>' can't be assigned to a variable of type 'bool'.
assert(id(true), await func(\"message\"));
- ^" in self::id<core::bool>(true) as{TypeError,ForNonNullableByDefault} core::bool)
- ;
- else {
- [yield] let dynamic #t27 = asy::_awaitHelper(func<core::String>("message"){(core::String) → FutureOr<core::String>}, :async_op_then, :async_op_error) in null;
- assert(false, _in::unsafeCast<core::String>(:result_or_exception));
- }
- }
- assert {
- [yield] let dynamic #t28 = asy::_awaitHelper(func<core::bool>(true){(core::bool) → FutureOr<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- ;
- else {
- [yield] let dynamic #t29 = asy::_awaitHelper(func<core::String>("message"){(core::String) → FutureOr<core::String>}, :async_op_then, :async_op_error) in null;
- assert(false, _in::unsafeCast<core::String>(:result_or_exception));
- }
- }
- try {
- assert {
- [yield] let dynamic #t30 = asy::_awaitHelper(func<core::bool>(false){(core::bool) → FutureOr<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- ;
- else {
- [yield] let dynamic #t31 = asy::_awaitHelper(func<core::String>("message"){(core::String) → FutureOr<core::String>}, :async_op_then, :async_op_error) in null;
- assert(false, _in::unsafeCast<core::String>(:result_or_exception));
- }
- }
- if(self::assertStatementsEnabled)
- throw "Didn't throw";
- }
- on core::AssertionError catch(final core::AssertionError e) {
- self::expect("message", e.{core::AssertionError::message}{core::Object?});
- }
- }
- }
+ ^" in self::id<core::bool>(true) as{TypeError,ForNonNullableByDefault} core::bool, await func<core::String>("message"){(core::String) → FutureOr<core::String>});
+ assert(await func<core::bool>(true){(core::bool) → FutureOr<core::bool>}, await func<core::String>("message"){(core::String) → FutureOr<core::String>});
+ try {
+ assert(await func<core::bool>(false){(core::bool) → FutureOr<core::bool>}, await func<core::String>("message"){(core::String) → FutureOr<core::String>});
+ if(self::assertStatementsEnabled)
+ throw "Didn't throw";
+ }
+ on core::AssertionError catch(final core::AssertionError e) {
+ self::expect("message", e.{core::AssertionError::message}{core::Object?});
}
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
}
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ }
}
-static method controlFlow() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- dynamic :saved_try_context_var2;
- dynamic :saved_try_context_var3;
- dynamic :exception0;
- dynamic :stack_trace0;
- core::List<dynamic> :async_temporary_0;
- core::List<dynamic> :async_temporary_1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L7:
+static method controlFlow() → dynamic async /* futureValueType= dynamic */ {
+ {
+ core::Iterator<<T extends core::Object? = dynamic>(T%) → FutureOr<T%>> :sync-for-iterator = core::_GrowableList::_literal2<<T extends core::Object? = dynamic>(T%) → FutureOr<T%>>(#C1, #C2).{core::Iterable::iterator}{core::Iterator<<T extends core::Object? = dynamic>(T%) → FutureOr<T%>>};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ final <T extends core::Object? = dynamic>(T%) → FutureOr<T%>func = :sync-for-iterator.{core::Iterator::current}{<T extends core::Object? = dynamic>(T%) → FutureOr<T%>};
{
- {
- core::Iterator<<T extends core::Object? = dynamic>(T%) → FutureOr<T%>> :sync-for-iterator = core::_GrowableList::_literal2<<T extends core::Object? = dynamic>(T%) → FutureOr<T%>>(#C1, #C2).{core::Iterable::iterator}{core::Iterator<<T extends core::Object? = dynamic>(T%) → FutureOr<T%>>};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- final <T extends core::Object? = dynamic>(T%) → FutureOr<T%>func = :sync-for-iterator.{core::Iterator::current}{<T extends core::Object? = dynamic>(T%) → FutureOr<T%>};
+ core::int c = 0;
+ for (core::int i = await func<core::int>(0){(core::int) → FutureOr<core::int>}; await func<core::bool>(i.{core::num::<}(5){(core::num) → core::bool}){(core::bool) → FutureOr<core::bool>}; await func<core::int>(let final core::int #t1 = i in let final core::int #t2 = i = #t1.{core::num::+}(1){(core::num) → core::int} in #t1){(core::int) → FutureOr<core::int>}) {
+ c = c.{core::num::+}(1){(core::num) → core::int};
+ }
+ self::expect(5, c);
+ c = 0;
+ while (await func<core::bool>(c.{core::num::<}(5){(core::num) → core::bool}){(core::bool) → FutureOr<core::bool>})
+ c = c.{core::num::+}(1){(core::num) → core::int};
+ self::expect(5, c);
+ c = 0;
+ do {
+ c = c.{core::num::+}(1){(core::num) → core::int};
+ }
+ while (await func<core::bool>(c.{core::num::<}(5){(core::num) → core::bool}){(core::bool) → FutureOr<core::bool>})
+ self::expect(5, c);
+ if(await func<core::bool>(c =={core::num::==}{(core::Object) → core::bool} 5){(core::bool) → FutureOr<core::bool>}) {
+ self::expect(5, c);
+ }
+ else {
+ throw "unreachable";
+ }
+ try {
+ throw await func<core::String>("string"){(core::String) → FutureOr<core::String>};
+ }
+ on core::String catch(no-exception-var) {
+ }
+ try {
+ let final Never #t3 = await throw "string" in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+ }
+ on core::String catch(no-exception-var) {
+ }
+ try
+ try {
+ try
+ try {
+ throw "string";
+ }
+ on core::Object catch(final core::Object e) {
+ self::expect("string", e);
+ self::expect(0, await func<core::int>(0){(core::int) → FutureOr<core::int>});
+ rethrow;
+ }
+ finally {
+ self::expect(0, await func<core::int>(0){(core::int) → FutureOr<core::int>});
+ }
+ }
+ on core::Object catch(final core::Object e) {
+ self::expect(0, await func<core::int>(0){(core::int) → FutureOr<core::int>});
+ self::expect("string", e);
+ }
+ finally {
+ self::expect(0, await func<core::int>(0){(core::int) → FutureOr<core::int>});
+ }
+ #L1:
+ switch(await func<core::int>(2){(core::int) → FutureOr<core::int>}) {
+ #L2:
+ case #C3:
{
- core::int c = 0;
- {
- dynamic #t32 = true;
- core::int #t33;
- #L8:
- while (true) {
- has-declared-initializer core::int i;
- if(#t32) {
- #t32 = false;
- [yield] let dynamic #t34 = asy::_awaitHelper(func<core::int>(0){(core::int) → FutureOr<core::int>}, :async_op_then, :async_op_error) in null;
- i = _in::unsafeCast<core::int>(:result_or_exception);
- }
- else {
- i = #t33;
- [yield] let dynamic #t35 = asy::_awaitHelper(func<core::int>(let final core::int #t36 = i in let final core::int #t37 = i = #t36.{core::num::+}(1){(core::num) → core::int} in #t36){(core::int) → FutureOr<core::int>}, :async_op_then, :async_op_error) in null;
- _in::unsafeCast<core::int>(:result_or_exception);
- }
- [yield] let dynamic #t38 = asy::_awaitHelper(func<core::bool>(i.{core::num::<}(5){(core::num) → core::bool}){(core::bool) → FutureOr<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- {
- c = c.{core::num::+}(1){(core::num) → core::int};
- }
- #t33 = i;
- }
- else
- break #L8;
- }
- }
- self::expect(5, c);
- c = 0;
- #L9:
- while (true) {
- [yield] let dynamic #t39 = asy::_awaitHelper(func<core::bool>(c.{core::num::<}(5){(core::num) → core::bool}){(core::bool) → FutureOr<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- c = c.{core::num::+}(1){(core::num) → core::int};
- else
- break #L9;
- }
- self::expect(5, c);
- c = 0;
- do {
- c = c.{core::num::+}(1){(core::num) → core::int};
- [yield] let dynamic #t40 = asy::_awaitHelper(func<core::bool>(c.{core::num::<}(5){(core::num) → core::bool}){(core::bool) → FutureOr<core::bool>}, :async_op_then, :async_op_error) in null;
- }
- while (_in::unsafeCast<core::bool>(:result_or_exception))
- self::expect(5, c);
- [yield] let dynamic #t41 = asy::_awaitHelper(func<core::bool>(c =={core::num::==}{(core::Object) → core::bool} 5){(core::bool) → FutureOr<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- self::expect(5, c);
- }
- else {
- throw "unreachable";
- }
- try {
- [yield] let dynamic #t42 = asy::_awaitHelper(func<core::String>("string"){(core::String) → FutureOr<core::String>}, :async_op_then, :async_op_error) in null;
- throw _in::unsafeCast<core::String>(:result_or_exception);
- }
- on core::String catch(no-exception-var) {
- }
- try {
- [yield] let dynamic #t43 = asy::_awaitHelper(throw "string", :async_op_then, :async_op_error) in null;
- let final Never #t44 = _in::unsafeCast<Never>(:result_or_exception) in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
- }
- on core::String catch(no-exception-var) {
- }
- try
- try {
- try
- try {
- throw "string";
- }
- on core::Object catch(final core::Object e) {
- self::expect("string", e);
- [yield] let dynamic #t45 = asy::_awaitHelper(func<core::int>(0){(core::int) → FutureOr<core::int>}, :async_op_then, :async_op_error) in null;
- self::expect(0, _in::unsafeCast<core::int>(:result_or_exception));
- rethrow;
- }
- finally {
- [yield] let dynamic #t46 = asy::_awaitHelper(func<core::int>(0){(core::int) → FutureOr<core::int>}, :async_op_then, :async_op_error) in null;
- self::expect(0, _in::unsafeCast<core::int>(:result_or_exception));
- }
- }
- on core::Object catch(final core::Object e) {
- [yield] let dynamic #t47 = asy::_awaitHelper(func<core::int>(0){(core::int) → FutureOr<core::int>}, :async_op_then, :async_op_error) in null;
- self::expect(0, _in::unsafeCast<core::int>(:result_or_exception));
- self::expect("string", e);
- }
- finally {
- [yield] let dynamic #t48 = asy::_awaitHelper(func<core::int>(0){(core::int) → FutureOr<core::int>}, :async_op_then, :async_op_error) in null;
- self::expect(0, _in::unsafeCast<core::int>(:result_or_exception));
- }
- #L10:
- {
- [yield] let dynamic #t49 = asy::_awaitHelper(func<core::int>(2){(core::int) → FutureOr<core::int>}, :async_op_then, :async_op_error) in null;
- switch(_in::unsafeCast<core::int>(:result_or_exception)) {
- #L11:
- case #C3:
- {
- break #L10;
- }
- #L12:
- default:
- {
- throw "unreachable";
- }
- }
- }
- [yield] let dynamic #t50 = asy::_awaitHelper((() → asy::Future<core::int> /* futureValueType= core::int */ /* originally async */ {
- final asy::_Future<core::int> :async_future = new asy::_Future::•<core::int>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L13:
- {
- [yield] let dynamic #t51 = asy::_awaitHelper(func<core::int>(42){(core::int) → FutureOr<core::int>}, :async_op_then, :async_op_error) in null;
- :return_value = _in::unsafeCast<core::int>(:result_or_exception);
- break #L13;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- })(){() → asy::Future<core::int>}, :async_op_then, :async_op_error) in null;
- self::expect(42, _in::unsafeCast<core::int>(:result_or_exception));
- [yield] let dynamic #t52 = asy::_awaitHelper((() → asy::Future<core::int> /* futureValueType= core::int */ /* originally async */ {
- final asy::_Future<core::int> :async_future = new asy::_Future::•<core::int>();
- core::bool* :is_sync = false;
- FutureOr<core::int>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L14:
- {
- :return_value = func<core::int>(42){(core::int) → FutureOr<core::int>};
- break #L14;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- })(){() → asy::Future<core::int>}, :async_op_then, :async_op_error) in null;
- self::expect(42, _in::unsafeCast<core::int>(:result_or_exception));
- function testStream1() → asy::Stream<core::int> /* originally async* */ {
- asy::_AsyncStarStreamController<core::int>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L15:
- {
- [yield] let dynamic #t53 = asy::_awaitHelper(func<core::int>(42){(core::int) → FutureOr<core::int>}, :async_op_then, :async_op_error) in null;
- if(:controller.{asy::_AsyncStarStreamController::add}(_in::unsafeCast<core::int>(:result_or_exception)){(core::int) → core::bool})
- return null;
- else
- [yield] null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::int>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::int>};
- return :controller_stream;
- }
- :async_temporary_0 = core::_GrowableList::_literal1<dynamic>(42);
- [yield] let dynamic #t54 = asy::_awaitHelper(testStream1(){() → asy::Stream<core::int>}.{asy::Stream::toList}(){() → asy::Future<core::List<core::int>>}, :async_op_then, :async_op_error) in null;
- self::expectList(_in::unsafeCast<core::List<dynamic>>(:async_temporary_0), _in::unsafeCast<core::List<core::int>>(:result_or_exception));
- function testStream2() → asy::Stream<core::int> /* originally async* */ {
- asy::_AsyncStarStreamController<core::int>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L16:
- {
- [yield] let dynamic #t55 = asy::_awaitHelper(func<asy::Stream<core::int>>(self::intStream()){(asy::Stream<core::int>) → FutureOr<asy::Stream<core::int>>}, :async_op_then, :async_op_error) in null;
- :controller.{asy::_AsyncStarStreamController::addStream}(_in::unsafeCast<asy::Stream<core::int>>(:result_or_exception)){(asy::Stream<core::int>) → void};
- [yield] null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- return null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::int>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::int>};
- return :controller_stream;
- }
- :async_temporary_1 = core::_GrowableList::_literal1<dynamic>(42);
- [yield] let dynamic #t56 = asy::_awaitHelper(testStream2(){() → asy::Stream<core::int>}.{asy::Stream::toList}(){() → asy::Future<core::List<core::int>>}, :async_op_then, :async_op_error) in null;
- self::expectList(_in::unsafeCast<core::List<dynamic>>(:async_temporary_1), _in::unsafeCast<core::List<core::int>>(:result_or_exception));
+ break #L1;
}
- }
+ #L3:
+ default:
+ {
+ throw "unreachable";
+ }
}
+ self::expect(42, await(() → asy::Future<core::int> async /* futureValueType= core::int */ {
+ return await func<core::int>(42){(core::int) → FutureOr<core::int>};
+ })(){() → asy::Future<core::int>});
+ self::expect(42, await(() → asy::Future<core::int> async /* futureValueType= core::int */ {
+ return func<core::int>(42){(core::int) → FutureOr<core::int>};
+ })(){() → asy::Future<core::int>});
+ function testStream1() → asy::Stream<core::int> async* {
+ yield await func<core::int>(42){(core::int) → FutureOr<core::int>};
+ }
+ self::expectList(core::_GrowableList::_literal1<dynamic>(42), await testStream1(){() → asy::Stream<core::int>}.{asy::Stream::toList}(){() → asy::Future<core::List<core::int>>});
+ function testStream2() → asy::Stream<core::int> async* {
+ yield* await func<asy::Stream<core::int>>(self::intStream()){(asy::Stream<core::int>) → FutureOr<asy::Stream<core::int>>};
+ }
+ self::expectList(core::_GrowableList::_literal1<dynamic>(42), await testStream2(){() → asy::Stream<core::int>}.{asy::Stream::toList}(){() → asy::Future<core::List<core::int>>});
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
}
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ }
}
-static method future<T extends core::Object? = dynamic>(self::future::T% value) → FutureOr<self::future::T%> /* futureValueType= self::future::T% */ /* originally async */ {
- final asy::_Future<self::future::T%> :async_future = new asy::_Future::•<self::future::T%>();
- core::bool* :is_sync = false;
- FutureOr<self::future::T%>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L17:
- {
- :return_value = value;
- break #L17;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
+static method future<T extends core::Object? = dynamic>(self::future::T% value) → FutureOr<self::future::T%> async /* futureValueType= self::future::T% */
+ return value;
static method id<T extends core::Object? = dynamic>(self::id::T% value) → FutureOr<self::id::T%>
return value;
-static method intStream() → asy::Stream<core::int> /* originally async* */ {
- asy::_AsyncStarStreamController<core::int>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L18:
- {
- if(:controller.{asy::_AsyncStarStreamController::add}(42){(core::int) → core::bool})
- return null;
- else
- [yield] null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::int>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::int>};
- return :controller_stream;
+static method intStream() → asy::Stream<core::int> async* {
+ yield 42;
}
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L19:
- {
- for (core::int i = 0; i.{core::num::<}(11){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
- [yield] let dynamic #t57 = asy::_awaitHelper(self::staticMembers(), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- [yield] let dynamic #t58 = asy::_awaitHelper(self::topLevelMembers(), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- [yield] let dynamic #t59 = asy::_awaitHelper(self::instanceMembers(), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- [yield] let dynamic #t60 = asy::_awaitHelper(self::conditionals(), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- [yield] let dynamic #t61 = asy::_awaitHelper(self::others(), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- [yield] let dynamic #t62 = asy::_awaitHelper(self::asserts(), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- [yield] let dynamic #t63 = asy::_awaitHelper(self::controlFlow(), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ for (core::int i = 0; i.{core::num::<}(11){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int}) {
+ await self::staticMembers();
+ await self::topLevelMembers();
+ await self::instanceMembers();
+ await self::conditionals();
+ await self::others();
+ await self::asserts();
+ await self::controlFlow();
+ }
}
static method expect(dynamic expected, dynamic actual) → dynamic {
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
diff --git a/pkg/front_end/testcases/general/await_in_cascade.dart.weak.transformed.expect b/pkg/front_end/testcases/general/await_in_cascade.dart.weak.transformed.expect
index 4b57e71..32b67ed 100644
--- a/pkg/front_end/testcases/general/await_in_cascade.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/await_in_cascade.dart.weak.transformed.expect
@@ -2,7 +2,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -10,92 +9,15 @@
synthetic constructor •() → self::C
: super core::Object::•()
;
- method m() → asy::Future<core::List<core::int>> /* futureValueType= core::List<core::int> */ /* originally async */ {
- final asy::_Future<core::List<core::int>> :async_future = new asy::_Future::•<core::List<core::int>>();
- core::bool* :is_sync = false;
- core::List<core::int>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- final core::List<core::int> #t1 = core::_GrowableList::•<core::int>(0);
- [yield] let dynamic #t2 = asy::_awaitHelper(this.{self::C::_m}(){() → asy::Future<core::int>}, :async_op_then, :async_op_error) in null;
- #t1.{core::List::add}(_in::unsafeCast<core::int>(:result_or_exception)){(core::int) → void};
- :return_value = block {} =>#t1;
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
- method _m() → asy::Future<core::int> /* futureValueType= core::int */ /* originally async */ {
- final asy::_Future<core::int> :async_future = new asy::_Future::•<core::int>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = 42;
- break #L2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
+ method m() → asy::Future<core::List<core::int>> async /* futureValueType= core::List<core::int> */
+ return let final core::List<core::int> #t1 = core::_GrowableList::•<core::int>(0) in block {
+ #t1.{core::List::add}(await this.{self::C::_m}(){() → asy::Future<core::int>}){(core::int) → void};
+ } =>#t1;
+ method _m() → asy::Future<core::int> async /* futureValueType= core::int */
+ return 42;
}
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- [yield] let dynamic #t3 = asy::_awaitHelper(new self::C::•().{self::C::m}(){() → asy::Future<core::List<core::int>>}, :async_op_then, :async_op_error) in null;
- self::expect(42, _in::unsafeCast<core::List<core::int>>(:result_or_exception).{core::Iterable::first}{core::int});
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ self::expect(42, (await new self::C::•().{self::C::m}(){() → asy::Future<core::List<core::int>>}).{core::Iterable::first}{core::int});
}
static method expect(dynamic expected, dynamic actual) → dynamic {
if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
diff --git a/pkg/front_end/testcases/general/bug33196.dart.weak.transformed.expect b/pkg/front_end/testcases/general/bug33196.dart.weak.transformed.expect
index 25f1e40..61269a2 100644
--- a/pkg/front_end/testcases/general/bug33196.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/bug33196.dart.weak.transformed.expect
@@ -1,7 +1,6 @@
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-import "dart:async" as asy;
import "dart:async";
@@ -9,30 +8,6 @@
FutureOr<core::String>result = self::returnsString();
core::print(result.{core::Object::runtimeType}{core::Type});
}
-static method returnsString() → FutureOr<core::String> /* futureValueType= core::String */ /* originally async */ {
- final asy::_Future<core::String> :async_future = new asy::_Future::•<core::String>();
- core::bool* :is_sync = false;
- core::String? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = "oh no";
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method returnsString() → FutureOr<core::String> async /* futureValueType= core::String */ {
+ return "oh no";
}
diff --git a/pkg/front_end/testcases/general/bug33206.dart.weak.transformed.expect b/pkg/front_end/testcases/general/bug33206.dart.weak.transformed.expect
index f5586b6..b66e0d1 100644
--- a/pkg/front_end/testcases/general/bug33206.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/bug33206.dart.weak.transformed.expect
@@ -2,7 +2,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -21,123 +20,20 @@
;
method f(dynamic _) → dynamic {}
}
-static method f1() → asy::Future<core::List<core::Object>> /* futureValueType= core::List<core::Object> */ /* originally async */ {
- final asy::_Future<core::List<core::Object>> :async_future = new asy::_Future::•<core::List<core::Object>>();
- core::bool* :is_sync = false;
- core::List<core::Object>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = core::_GrowableList::_literal1<core::Object>(1);
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method f1() → asy::Future<core::List<core::Object>> async /* futureValueType= core::List<core::Object> */ {
+ return core::_GrowableList::_literal1<core::Object>(1);
}
static method f2() → core::List<core::Object>
return core::_GrowableList::_literal1<core::Object>(2);
-static method f3() → asy::Future<core::Object> /* futureValueType= core::Object */ /* originally async */ {
- final asy::_Future<core::Object> :async_future = new asy::_Future::•<core::Object>();
- core::bool* :is_sync = false;
- core::Object? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = 3;
- break #L2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method f3() → asy::Future<core::Object> async /* futureValueType= core::Object */ {
+ return 3;
}
-static method foo() → asy::Future<self::X> /* futureValueType= self::X */ /* originally async */ {
- final asy::_Future<self::X> :async_future = new asy::_Future::•<self::X>();
- core::bool* :is_sync = false;
- self::X? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- self::Y :async_temporary_0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- final self::Y #t1 = new self::Y::•();
- [yield] let dynamic #t2 = asy::_awaitHelper(self::f1(), :async_op_then, :async_op_error) in null;
- #t1.{self::Y::f}(_in::unsafeCast<core::List<core::Object>>(:result_or_exception)){(dynamic) → dynamic};
- :async_temporary_0 = block {
- #t1.{self::Y::f}(self::f2()){(dynamic) → dynamic};
- } =>#t1;
- [yield] let dynamic #t3 = asy::_awaitHelper(self::f3(), :async_op_then, :async_op_error) in null;
- :return_value = new self::X::•(_in::unsafeCast<self::Y>(:async_temporary_0), _in::unsafeCast<core::Object>(:result_or_exception));
- break #L3;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method foo() → asy::Future<self::X> async /* futureValueType= self::X */ {
+ return new self::X::•(let final self::Y #t1 = new self::Y::•() in block {
+ #t1.{self::Y::f}(await self::f1()){(dynamic) → dynamic};
+ #t1.{self::Y::f}(self::f2()){(dynamic) → dynamic};
+ } =>#t1, await self::f3());
}
-static method main() → asy::Future<void> /* futureValueType= void */ /* originally async */ {
- final asy::_Future<void> :async_future = new asy::_Future::•<void>();
- core::bool* :is_sync = false;
- void :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- [yield] let dynamic #t4 = asy::_awaitHelper(self::foo(), :async_op_then, :async_op_error) in null;
- core::print(_in::unsafeCast<self::X>(:result_or_exception));
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → asy::Future<void> async /* futureValueType= void */ {
+ core::print(await self::foo());
}
diff --git a/pkg/front_end/testcases/general/check_deferred_before_args2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/check_deferred_before_args2.dart.weak.transformed.expect
index 3517f76..4c94c0f 100644
--- a/pkg/front_end/testcases/general/check_deferred_before_args2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/check_deferred_before_args2.dart.weak.transformed.expect
@@ -1,40 +1,13 @@
library /*isNonNullableByDefault*/;
import self as self;
-import "dart:async" as asy;
import "dart:core" as core;
import "deferred_lib.dart" as def;
import "org-dartlang-testcase:///deferred_lib.dart" deferred as lib;
static method main() → dynamic {}
-static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- final core::Object* #t1 = CheckLibraryIsLoaded(lib);
- [yield] let dynamic #t2 = asy::_awaitHelper(LoadLibrary(lib), :async_op_then, :async_op_error) in null;
- def::m(:result_or_exception);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method test() → dynamic async /* futureValueType= dynamic */ {
+ let final core::Object* #t1 = CheckLibraryIsLoaded(lib) in def::m(await LoadLibrary(lib));
}
library /*isNonNullableByDefault*/;
diff --git a/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.transformed.expect b/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.transformed.expect
index aa93492..ef6dd9c 100644
--- a/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/control_flow_collection_inference.dart.weak.transformed.expect
@@ -425,7 +425,6 @@
import "dart:core" as core;
import "dart:collection" as col;
import "dart:async" as asy;
-import "dart:_internal" as _in;
class A extends core::Object {
synthetic constructor •() → self::A*
@@ -1943,589 +1942,510 @@
#t235.{core::Map::[]=}{Invariant}(i, i){(core::int*, core::int*) →* void};
} =>#t235;
}
-static method testForElementErrors(core::Map<core::int*, core::int*>* map, core::List<core::int*>* list) → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- dynamic :exception0;
- dynamic :stack_trace0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- block {
- final core::List<core::int*>* #t236 = core::_GrowableList::•<core::int*>(0);
- for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
- #t236.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:212:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+static method testForElementErrors(core::Map<core::int*, core::int*>* map, core::List<core::int*>* list) → dynamic async /* futureValueType= dynamic */ {
+ block {
+ final core::List<core::int*>* #t236 = core::_GrowableList::•<core::int*>(0);
+ for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+ #t236.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:212:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
<int>[for (int i = 0; oracle(\"foo\"); i++) \"bar\"];
^" in "bar" as{TypeError} core::int*){(core::int*) →* void};
- } =>#t236;
- block {
- final core::Set<core::int*>* #t237 = new col::_CompactLinkedHashSet::•<core::int*>();
- for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
- #t237.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:213:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ } =>#t236;
+ block {
+ final core::Set<core::int*>* #t237 = new col::_CompactLinkedHashSet::•<core::int*>();
+ for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+ #t237.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:213:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
<int>{for (int i = 0; oracle(\"foo\"); i++) \"bar\", null};
^" in "bar" as{TypeError} core::int*){(core::int*) →* core::bool*};
- #t237.{core::Set::add}{Invariant}(null){(core::int*) →* core::bool*};
- } =>#t237;
- block {
- final core::Map<core::int*, core::int*>* #t238 = <core::int*, core::int*>{};
- for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
- #t238.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:214:50: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ #t237.{core::Set::add}{Invariant}(null){(core::int*) →* core::bool*};
+ } =>#t237;
+ block {
+ final core::Map<core::int*, core::int*>* #t238 = <core::int*, core::int*>{};
+ for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+ #t238.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:214:50: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
<int, int>{for (int i = 0; oracle(\"foo\"); i++) \"bar\": \"bar\", \"baz\": null};
^" in "bar" as{TypeError} core::int*, invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:214:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
<int, int>{for (int i = 0; oracle(\"foo\"); i++) \"bar\": \"bar\", \"baz\": null};
^" in "bar" as{TypeError} core::int*){(core::int*, core::int*) →* void};
- #t238.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:214:64: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ #t238.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:214:64: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
<int, int>{for (int i = 0; oracle(\"foo\"); i++) \"bar\": \"bar\", \"baz\": null};
^" in "baz" as{TypeError} core::int*, null){(core::int*, core::int*) →* void};
- } =>#t238;
- block {
- final core::List<core::int*>* #t239 = core::_GrowableList::•<core::int*>(0);
- for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
- #t239.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::int*>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:215:49: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ } =>#t238;
+ block {
+ final core::List<core::int*>* #t239 = core::_GrowableList::•<core::int*>(0);
+ for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+ #t239.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::int*>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:215:49: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
<int>[for (int i = 0; oracle(\"foo\"); i++) ...[\"bar\"]];
^" in "bar" as{TypeError} core::int*)){(core::Iterable<core::int*>*) →* void};
- } =>#t239;
- block {
- final core::Set<core::int*>* #t240 = new col::_CompactLinkedHashSet::•<core::int*>();
- for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
- #t240.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::int*>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:216:49: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ } =>#t239;
+ block {
+ final core::Set<core::int*>* #t240 = new col::_CompactLinkedHashSet::•<core::int*>();
+ for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+ #t240.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::int*>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:216:49: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
<int>{for (int i = 0; oracle(\"foo\"); i++) ...[\"bar\"], null};
^" in "bar" as{TypeError} core::int*)){(core::Iterable<core::int*>*) →* void};
- #t240.{core::Set::add}{Invariant}(null){(core::int*) →* core::bool*};
- } =>#t240;
- block {
- final core::Map<core::int*, core::int*>* #t241 = <core::int*, core::int*>{};
- for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
- core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = <core::int*, core::int*>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:217:54: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ #t240.{core::Set::add}{Invariant}(null){(core::int*) →* core::bool*};
+ } =>#t240;
+ block {
+ final core::Map<core::int*, core::int*>* #t241 = <core::int*, core::int*>{};
+ for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*}) {
+ core::Iterator<core::MapEntry<core::int*, core::int*>>* :sync-for-iterator = <core::int*, core::int*>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:217:54: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
<int, int>{for (int i = 0; oracle(\"foo\"); i++) ...{\"bar\": \"bar\"}, \"baz\": null};
^" in "bar" as{TypeError} core::int*: invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:217:61: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
<int, int>{for (int i = 0; oracle(\"foo\"); i++) ...{\"bar\": \"bar\"}, \"baz\": null};
^" in "bar" as{TypeError} core::int*}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int*, core::int*>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int*, core::int*>>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- final core::MapEntry<core::int*, core::int*>* #t242 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int*, core::int*>};
- #t241.{core::Map::[]=}{Invariant}(#t242.{core::MapEntry::key}{core::int*}, #t242.{core::MapEntry::value}{core::int*}){(core::int*, core::int*) →* void};
- }
- }
- #t241.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:217:69: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ final core::MapEntry<core::int*, core::int*>* #t242 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int*, core::int*>};
+ #t241.{core::Map::[]=}{Invariant}(#t242.{core::MapEntry::key}{core::int*}, #t242.{core::MapEntry::value}{core::int*}){(core::int*, core::int*) →* void};
+ }
+ }
+ #t241.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:217:69: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
<int, int>{for (int i = 0; oracle(\"foo\"); i++) ...{\"bar\": \"bar\"}, \"baz\": null};
^" in "baz" as{TypeError} core::int*, null){(core::int*, core::int*) →* void};
- } =>#t241;
- block {
- final core::List<core::int*>* #t243 = core::_GrowableList::•<core::int*>(0);
- for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
- #t243.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:218:48: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
+ } =>#t241;
+ block {
+ final core::List<core::int*>* #t243 = core::_GrowableList::•<core::int*>(0);
+ for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+ #t243.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:218:48: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
- 'Map' is from 'dart:core'.
<int>[for (int i = 0; oracle(\"foo\"); i++) ...map];
^"){(core::int*) →* void};
- } =>#t243;
- block {
- final core::Set<core::int*>* #t244 = new col::_CompactLinkedHashSet::•<core::int*>();
- for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
- #t244.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:219:48: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
+ } =>#t243;
+ block {
+ final core::Set<core::int*>* #t244 = new col::_CompactLinkedHashSet::•<core::int*>();
+ for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+ #t244.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:219:48: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
- 'Map' is from 'dart:core'.
<int>{for (int i = 0; oracle(\"foo\"); i++) ...map, null};
^"){(core::int*) →* core::bool*};
- #t244.{core::Set::add}{Invariant}(null){(core::int*) →* core::bool*};
- } =>#t244;
- <core::int*, core::int*>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:220:53: Error: Unexpected type 'List<int>' of a map spread entry. Expected 'dynamic' or a Map.
+ #t244.{core::Set::add}{Invariant}(null){(core::int*) →* core::bool*};
+ } =>#t244;
+ <core::int*, core::int*>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:220:53: Error: Unexpected type 'List<int>' of a map spread entry. Expected 'dynamic' or a Map.
- 'List' is from 'dart:core'.
<int, int>{for (int i = 0; oracle(\"foo\"); i++) ...list, 42: null};
^": null, invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:220:53: Error: Unexpected type 'List<int>' of a map spread entry. Expected 'dynamic' or a Map.
- 'List' is from 'dart:core'.
<int, int>{for (int i = 0; oracle(\"foo\"); i++) ...list, 42: null};
^": null};
- block {
- final core::List<core::String*>* #t245 = core::_GrowableList::•<core::String*>(0);
- for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
- if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
- #t245.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:221:62: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+ block {
+ final core::List<core::String*>* #t245 = core::_GrowableList::•<core::String*>(0);
+ for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+ if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
+ #t245.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:221:62: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
<String>[for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else 3.14];
^" in 42 as{TypeError} core::String*){(core::String*) →* void};
- else
- #t245.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:221:70: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+ else
+ #t245.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:221:70: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
<String>[for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else 3.14];
^" in 3.14 as{TypeError} core::String*){(core::String*) →* void};
- } =>#t245;
- block {
- final core::Set<core::String*>* #t246 = new col::_CompactLinkedHashSet::•<core::String*>();
- for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
- if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
- #t246.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:222:62: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+ } =>#t245;
+ block {
+ final core::Set<core::String*>* #t246 = new col::_CompactLinkedHashSet::•<core::String*>();
+ for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+ if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
+ #t246.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:222:62: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
<String>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else 3.14, null};
^" in 42 as{TypeError} core::String*){(core::String*) →* core::bool*};
- else
- #t246.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:222:70: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+ else
+ #t246.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:222:70: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
<String>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else 3.14, null};
^" in 3.14 as{TypeError} core::String*){(core::String*) →* core::bool*};
- #t246.{core::Set::add}{Invariant}(null){(core::String*) →* core::bool*};
- } =>#t246;
- block {
- final core::Map<core::String*, core::String*>* #t247 = <core::String*, core::String*>{};
- for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
- if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
- #t247.{core::Map::[]=}{Invariant}("bar", invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:223:77: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+ #t246.{core::Set::add}{Invariant}(null){(core::String*) →* core::bool*};
+ } =>#t246;
+ block {
+ final core::Map<core::String*, core::String*>* #t247 = <core::String*, core::String*>{};
+ for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+ if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
+ #t247.{core::Map::[]=}{Invariant}("bar", invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:223:77: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
<String, String>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) \"bar\": 42 else \"bar\": 3.14, \"baz\": null};
^" in 42 as{TypeError} core::String*){(core::String*, core::String*) →* void};
- else
- #t247.{core::Map::[]=}{Invariant}("bar", invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:223:92: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+ else
+ #t247.{core::Map::[]=}{Invariant}("bar", invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:223:92: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
<String, String>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) \"bar\": 42 else \"bar\": 3.14, \"baz\": null};
^" in 3.14 as{TypeError} core::String*){(core::String*, core::String*) →* void};
- #t247.{core::Map::[]=}{Invariant}("baz", null){(core::String*, core::String*) →* void};
- } =>#t247;
- block {
- final core::List<core::int*>* #t248 = core::_GrowableList::•<core::int*>(0);
- for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
- if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
- #t248.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:224:62: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
+ #t247.{core::Map::[]=}{Invariant}("baz", null){(core::String*, core::String*) →* void};
+ } =>#t247;
+ block {
+ final core::List<core::int*>* #t248 = core::_GrowableList::•<core::int*>(0);
+ for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+ if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
+ #t248.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:224:62: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
- 'Map' is from 'dart:core'.
<int>[for (int i = 0; oracle(\"foo\"); i++) if (oracle()) ...map else 42];
^"){(core::int*) →* void};
- else
- #t248.{core::List::add}{Invariant}(42){(core::int*) →* void};
- } =>#t248;
- block {
- final core::Set<core::int*>* #t249 = new col::_CompactLinkedHashSet::•<core::int*>();
- for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
- if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
- #t249.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:225:62: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
+ else
+ #t248.{core::List::add}{Invariant}(42){(core::int*) →* void};
+ } =>#t248;
+ block {
+ final core::Set<core::int*>* #t249 = new col::_CompactLinkedHashSet::•<core::int*>();
+ for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+ if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
+ #t249.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:225:62: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
- 'Map' is from 'dart:core'.
<int>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) ...map else 42, null};
^"){(core::int*) →* core::bool*};
- else
- #t249.{core::Set::add}{Invariant}(42){(core::int*) →* core::bool*};
- #t249.{core::Set::add}{Invariant}(null){(core::int*) →* core::bool*};
- } =>#t249;
- <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:226:70: Error: Unexpected type 'List<int>' of a map spread entry. Expected 'dynamic' or a Map.
+ else
+ #t249.{core::Set::add}{Invariant}(42){(core::int*) →* core::bool*};
+ #t249.{core::Set::add}{Invariant}(null){(core::int*) →* core::bool*};
+ } =>#t249;
+ <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:226:70: Error: Unexpected type 'List<int>' of a map spread entry. Expected 'dynamic' or a Map.
- 'List' is from 'dart:core'.
<String, int>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) ...list else \"bar\": 42, \"baz\": null};
^": null, invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:226:70: Error: Unexpected type 'List<int>' of a map spread entry. Expected 'dynamic' or a Map.
- 'List' is from 'dart:core'.
<String, int>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) ...list else \"bar\": 42, \"baz\": null};
^": null};
- block {
- final core::List<core::int*>* #t250 = core::_GrowableList::•<core::int*>(0);
- for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
- if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
- #t250.{core::List::add}{Invariant}(42){(core::int*) →* void};
- else
- #t250.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:227:70: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
+ block {
+ final core::List<core::int*>* #t250 = core::_GrowableList::•<core::int*>(0);
+ for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+ if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
+ #t250.{core::List::add}{Invariant}(42){(core::int*) →* void};
+ else
+ #t250.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:227:70: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
- 'Map' is from 'dart:core'.
<int>[for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else ...map];
^"){(core::int*) →* void};
- } =>#t250;
- block {
- final core::Set<core::int*>* #t251 = new col::_CompactLinkedHashSet::•<core::int*>();
- for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
- if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
- #t251.{core::Set::add}{Invariant}(42){(core::int*) →* core::bool*};
- else
- #t251.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:228:70: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
+ } =>#t250;
+ block {
+ final core::Set<core::int*>* #t251 = new col::_CompactLinkedHashSet::•<core::int*>();
+ for (core::int* i = 0; self::oracle<core::String*>("foo") as{TypeError,ForDynamic} core::bool*; i = i.{core::num::+}(1){(core::num*) →* core::int*})
+ if(self::oracle<dynamic>() as{TypeError,ForDynamic} core::bool*)
+ #t251.{core::Set::add}{Invariant}(42){(core::int*) →* core::bool*};
+ else
+ #t251.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:228:70: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
- 'Map' is from 'dart:core'.
<int>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else ...map, null};
^"){(core::int*) →* core::bool*};
- #t251.{core::Set::add}{Invariant}(null){(core::int*) →* core::bool*};
- } =>#t251;
- <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:229:85: Error: Unexpected type 'List<int>' of a map spread entry. Expected 'dynamic' or a Map.
+ #t251.{core::Set::add}{Invariant}(null){(core::int*) →* core::bool*};
+ } =>#t251;
+ <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:229:85: Error: Unexpected type 'List<int>' of a map spread entry. Expected 'dynamic' or a Map.
- 'List' is from 'dart:core'.
<String, int>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) \"bar\": 42 else ...list, \"baz\": null};
^": null, invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:229:85: Error: Unexpected type 'List<int>' of a map spread entry. Expected 'dynamic' or a Map.
- 'List' is from 'dart:core'.
<String, int>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) \"bar\": 42 else ...list, \"baz\": null};
^": null};
- final core::int* i = 0;
- block {
- final core::List<core::int*>* #t252 = core::_GrowableList::•<core::int*>(0);
- {
- core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal1<core::int*>(1).{core::Iterable::iterator}{core::Iterator<core::int*>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- final core::int* #t253 = :sync-for-iterator.{core::Iterator::current}{core::int*};
- {
- invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:232:14: Error: Can't assign to the final variable 'i'.
+ final core::int* i = 0;
+ block {
+ final core::List<core::int*>* #t252 = core::_GrowableList::•<core::int*>(0);
+ {
+ core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal1<core::int*>(1).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ final core::int* #t253 = :sync-for-iterator.{core::Iterator::current}{core::int*};
+ {
+ invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:232:14: Error: Can't assign to the final variable 'i'.
<int>[for (i in <int>[1]) i];
^";
- #t252.{core::List::add}{Invariant}(i){(core::int*) →* void};
- }
- }
- }
- } =>#t252;
- block {
- final core::Set<core::int*>* #t254 = new col::_CompactLinkedHashSet::•<core::int*>();
- {
- core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal1<core::int*>(1).{core::Iterable::iterator}{core::Iterator<core::int*>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- final core::int* #t255 = :sync-for-iterator.{core::Iterator::current}{core::int*};
- {
- invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:233:14: Error: Can't assign to the final variable 'i'.
+ #t252.{core::List::add}{Invariant}(i){(core::int*) →* void};
+ }
+ }
+ }
+ } =>#t252;
+ block {
+ final core::Set<core::int*>* #t254 = new col::_CompactLinkedHashSet::•<core::int*>();
+ {
+ core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal1<core::int*>(1).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ final core::int* #t255 = :sync-for-iterator.{core::Iterator::current}{core::int*};
+ {
+ invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:233:14: Error: Can't assign to the final variable 'i'.
<int>{for (i in <int>[1]) i, null};
^";
- #t254.{core::Set::add}{Invariant}(i){(core::int*) →* core::bool*};
- }
- }
- }
- #t254.{core::Set::add}{Invariant}(null){(core::int*) →* core::bool*};
- } =>#t254;
- block {
- final core::Map<core::String*, core::int*>* #t256 = <core::String*, core::int*>{};
- {
- core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal1<core::int*>(1).{core::Iterable::iterator}{core::Iterator<core::int*>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- final core::int* #t257 = :sync-for-iterator.{core::Iterator::current}{core::int*};
- {
- invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:234:21: Error: Can't assign to the final variable 'i'.
+ #t254.{core::Set::add}{Invariant}(i){(core::int*) →* core::bool*};
+ }
+ }
+ }
+ #t254.{core::Set::add}{Invariant}(null){(core::int*) →* core::bool*};
+ } =>#t254;
+ block {
+ final core::Map<core::String*, core::int*>* #t256 = <core::String*, core::int*>{};
+ {
+ core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal1<core::int*>(1).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ final core::int* #t257 = :sync-for-iterator.{core::Iterator::current}{core::int*};
+ {
+ invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:234:21: Error: Can't assign to the final variable 'i'.
\t<String, int>{for (i in <int>[1]) \"bar\": i, \"baz\": null};
\t ^";
- #t256.{core::Map::[]=}{Invariant}("bar", i){(core::String*, core::int*) →* void};
- }
- }
- }
- #t256.{core::Map::[]=}{Invariant}("baz", null){(core::String*, core::int*) →* void};
- } =>#t256;
- core::List<dynamic>* list10 = block {
- final core::List<dynamic>* #t258 = core::_GrowableList::•<dynamic>(0);
- {
- core::Iterator<Never>* :sync-for-iterator = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:236:31: Error: The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
+ #t256.{core::Map::[]=}{Invariant}("bar", i){(core::String*, core::int*) →* void};
+ }
+ }
+ }
+ #t256.{core::Map::[]=}{Invariant}("baz", null){(core::String*, core::int*) →* void};
+ } =>#t256;
+ core::List<dynamic>* list10 = block {
+ final core::List<dynamic>* #t258 = core::_GrowableList::•<dynamic>(0);
+ {
+ core::Iterator<Never>* :sync-for-iterator = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:236:31: Error: The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
- 'Iterable' is from 'dart:core'.
var list10 = [for (var i in \"not iterable\") i];
^" in "not iterable" as{TypeError} core::Iterable<dynamic>*.{core::Iterable::iterator}{core::Iterator<Never>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- dynamic i = :sync-for-iterator.{core::Iterator::current}{Never};
- #t258.{core::List::add}{Invariant}(i){(dynamic) →* void};
- }
- }
- } =>#t258;
- core::Set<dynamic>* set10 = block {
- final core::Set<dynamic>* #t259 = new col::_CompactLinkedHashSet::•<dynamic>();
- {
- core::Iterator<Never>* :sync-for-iterator = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:237:30: Error: The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ dynamic i = :sync-for-iterator.{core::Iterator::current}{Never};
+ #t258.{core::List::add}{Invariant}(i){(dynamic) →* void};
+ }
+ }
+ } =>#t258;
+ core::Set<dynamic>* set10 = block {
+ final core::Set<dynamic>* #t259 = new col::_CompactLinkedHashSet::•<dynamic>();
+ {
+ core::Iterator<Never>* :sync-for-iterator = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:237:30: Error: The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
- 'Iterable' is from 'dart:core'.
var set10 = {for (var i in \"not iterable\") i, null};
^" in "not iterable" as{TypeError} core::Iterable<dynamic>*.{core::Iterable::iterator}{core::Iterator<Never>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- dynamic i = :sync-for-iterator.{core::Iterator::current}{Never};
- #t259.{core::Set::add}{Invariant}(i){(dynamic) →* core::bool*};
- }
- }
- #t259.{core::Set::add}{Invariant}(null){(dynamic) →* core::bool*};
- } =>#t259;
- core::Map<core::String*, dynamic>* map10 = block {
- final core::Map<core::String*, dynamic>* #t260 = <core::String*, dynamic>{};
- {
- core::Iterator<Never>* :sync-for-iterator = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:238:30: Error: The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ dynamic i = :sync-for-iterator.{core::Iterator::current}{Never};
+ #t259.{core::Set::add}{Invariant}(i){(dynamic) →* core::bool*};
+ }
+ }
+ #t259.{core::Set::add}{Invariant}(null){(dynamic) →* core::bool*};
+ } =>#t259;
+ core::Map<core::String*, dynamic>* map10 = block {
+ final core::Map<core::String*, dynamic>* #t260 = <core::String*, dynamic>{};
+ {
+ core::Iterator<Never>* :sync-for-iterator = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:238:30: Error: The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
- 'Iterable' is from 'dart:core'.
var map10 = {for (var i in \"not iterable\") \"bar\": i, \"baz\": null};
^" in "not iterable" as{TypeError} core::Iterable<dynamic>*.{core::Iterable::iterator}{core::Iterator<Never>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- dynamic i = :sync-for-iterator.{core::Iterator::current}{Never};
- #t260.{core::Map::[]=}{Invariant}("bar", i){(core::String*, dynamic) →* void};
- }
- }
- #t260.{core::Map::[]=}{Invariant}("baz", null){(core::String*, dynamic) →* void};
- } =>#t260;
- core::List<core::int*>* list20 = block {
- final core::List<core::int*>* #t261 = core::_GrowableList::•<core::int*>(0);
- {
- core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal2<core::int*>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:239:32: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ dynamic i = :sync-for-iterator.{core::Iterator::current}{Never};
+ #t260.{core::Map::[]=}{Invariant}("bar", i){(core::String*, dynamic) →* void};
+ }
+ }
+ #t260.{core::Map::[]=}{Invariant}("baz", null){(core::String*, dynamic) →* void};
+ } =>#t260;
+ core::List<core::int*>* list20 = block {
+ final core::List<core::int*>* #t261 = core::_GrowableList::•<core::int*>(0);
+ {
+ core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal2<core::int*>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:239:32: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var list20 = [for (int i in [\"not\", \"int\"]) i];
^" in "not" as{TypeError} core::int*, invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:239:39: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var list20 = [for (int i in [\"not\", \"int\"]) i];
^" in "int" as{TypeError} core::int*).{core::Iterable::iterator}{core::Iterator<core::int*>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- core::int* i = :sync-for-iterator.{core::Iterator::current}{core::int*};
- #t261.{core::List::add}{Invariant}(i){(core::int*) →* void};
- }
- }
- } =>#t261;
- core::Set<core::int*>* set20 = block {
- final core::Set<core::int*>* #t262 = new col::_CompactLinkedHashSet::•<core::int*>();
- {
- core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal2<core::int*>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:240:31: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ core::int* i = :sync-for-iterator.{core::Iterator::current}{core::int*};
+ #t261.{core::List::add}{Invariant}(i){(core::int*) →* void};
+ }
+ }
+ } =>#t261;
+ core::Set<core::int*>* set20 = block {
+ final core::Set<core::int*>* #t262 = new col::_CompactLinkedHashSet::•<core::int*>();
+ {
+ core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal2<core::int*>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:240:31: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var set20 = {for (int i in [\"not\", \"int\"]) i, null};
^" in "not" as{TypeError} core::int*, invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:240:38: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var set20 = {for (int i in [\"not\", \"int\"]) i, null};
^" in "int" as{TypeError} core::int*).{core::Iterable::iterator}{core::Iterator<core::int*>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- core::int* i = :sync-for-iterator.{core::Iterator::current}{core::int*};
- #t262.{core::Set::add}{Invariant}(i){(core::int*) →* core::bool*};
- }
- }
- #t262.{core::Set::add}{Invariant}(null){(core::int*) →* core::bool*};
- } =>#t262;
- core::Map<core::String*, core::int*>* map20 = block {
- final core::Map<core::String*, core::int*>* #t263 = <core::String*, core::int*>{};
- {
- core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal2<core::int*>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:241:31: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ core::int* i = :sync-for-iterator.{core::Iterator::current}{core::int*};
+ #t262.{core::Set::add}{Invariant}(i){(core::int*) →* core::bool*};
+ }
+ }
+ #t262.{core::Set::add}{Invariant}(null){(core::int*) →* core::bool*};
+ } =>#t262;
+ core::Map<core::String*, core::int*>* map20 = block {
+ final core::Map<core::String*, core::int*>* #t263 = <core::String*, core::int*>{};
+ {
+ core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal2<core::int*>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:241:31: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var map20 = {for (int i in [\"not\", \"int\"]) \"bar\": i, \"baz\": null};
^" in "not" as{TypeError} core::int*, invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:241:38: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var map20 = {for (int i in [\"not\", \"int\"]) \"bar\": i, \"baz\": null};
^" in "int" as{TypeError} core::int*).{core::Iterable::iterator}{core::Iterator<core::int*>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- core::int* i = :sync-for-iterator.{core::Iterator::current}{core::int*};
- #t263.{core::Map::[]=}{Invariant}("bar", i){(core::String*, core::int*) →* void};
- }
- }
- #t263.{core::Map::[]=}{Invariant}("baz", null){(core::String*, core::int*) →* void};
- } =>#t263;
- final core::List<dynamic>* #t264 = core::_GrowableList::•<dynamic>(0);
- {
- Never :stream = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:242:37: Error: The type 'String' used in the 'for' loop must implement 'Stream<dynamic>'.
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ core::int* i = :sync-for-iterator.{core::Iterator::current}{core::int*};
+ #t263.{core::Map::[]=}{Invariant}("bar", i){(core::String*, core::int*) →* void};
+ }
+ }
+ #t263.{core::Map::[]=}{Invariant}("baz", null){(core::String*, core::int*) →* void};
+ } =>#t263;
+ core::List<dynamic>* list30 = block {
+ final core::List<dynamic>* #t264 = core::_GrowableList::•<dynamic>(0);
+ {
+ Never :stream = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:242:37: Error: The type 'String' used in the 'for' loop must implement 'Stream<dynamic>'.
- 'Stream' is from 'dart:async'.
var list30 = [await for (var i in \"not stream\") i];
^" in "not stream" as{TypeError} asy::Stream<dynamic>*;
- asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
- try
- #L2:
- while (true) {
- dynamic #t265 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t266 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- dynamic i = :for-iterator.{asy::_StreamIterator::current}{dynamic};
- #t264.{core::List::add}{Invariant}(i){(dynamic) →* void};
- }
- else
- break #L2;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
- [yield] let dynamic #t267 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
+ try
+ while (let dynamic #t265 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ dynamic i = :for-iterator.{asy::_StreamIterator::current}{dynamic};
+ #t264.{core::List::add}{Invariant}(i){(dynamic) →* void};
}
- core::List<dynamic>* list30 = block {} =>#t264;
- final core::Set<dynamic>* #t268 = new col::_CompactLinkedHashSet::•<dynamic>();
- {
- Never :stream = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:243:36: Error: The type 'String' used in the 'for' loop must implement 'Stream<dynamic>'.
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ } =>#t264;
+ core::Set<dynamic>* set30 = block {
+ final core::Set<dynamic>* #t266 = new col::_CompactLinkedHashSet::•<dynamic>();
+ {
+ Never :stream = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:243:36: Error: The type 'String' used in the 'for' loop must implement 'Stream<dynamic>'.
- 'Stream' is from 'dart:async'.
var set30 = {await for (var i in \"not stream\") i, null};
^" in "not stream" as{TypeError} asy::Stream<dynamic>*;
- asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
- try
- #L3:
- while (true) {
- dynamic #t269 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t270 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- dynamic i = :for-iterator.{asy::_StreamIterator::current}{dynamic};
- #t268.{core::Set::add}{Invariant}(i){(dynamic) →* core::bool*};
- }
- else
- break #L3;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
- [yield] let dynamic #t271 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
+ try
+ while (let dynamic #t267 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ dynamic i = :for-iterator.{asy::_StreamIterator::current}{dynamic};
+ #t266.{core::Set::add}{Invariant}(i){(dynamic) →* core::bool*};
}
- core::Set<dynamic>* set30 = block {
- #t268.{core::Set::add}{Invariant}(null){(dynamic) →* core::bool*};
- } =>#t268;
- final core::Map<core::String*, dynamic>* #t272 = <core::String*, dynamic>{};
- {
- Never :stream = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:244:36: Error: The type 'String' used in the 'for' loop must implement 'Stream<dynamic>'.
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ #t266.{core::Set::add}{Invariant}(null){(dynamic) →* core::bool*};
+ } =>#t266;
+ core::Map<core::String*, dynamic>* map30 = block {
+ final core::Map<core::String*, dynamic>* #t268 = <core::String*, dynamic>{};
+ {
+ Never :stream = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:244:36: Error: The type 'String' used in the 'for' loop must implement 'Stream<dynamic>'.
- 'Stream' is from 'dart:async'.
var map30 = {await for (var i in \"not stream\") \"bar\": i, \"baz\": null};
^" in "not stream" as{TypeError} asy::Stream<dynamic>*;
- asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
- try
- #L4:
- while (true) {
- dynamic #t273 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t274 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- dynamic i = :for-iterator.{asy::_StreamIterator::current}{dynamic};
- #t272.{core::Map::[]=}{Invariant}("bar", i){(core::String*, dynamic) →* void};
- }
- else
- break #L4;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
- [yield] let dynamic #t275 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
+ try
+ while (let dynamic #t269 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ dynamic i = :for-iterator.{asy::_StreamIterator::current}{dynamic};
+ #t268.{core::Map::[]=}{Invariant}("bar", i){(core::String*, dynamic) →* void};
}
- core::Map<core::String*, dynamic>* map30 = block {
- #t272.{core::Map::[]=}{Invariant}("baz", null){(core::String*, dynamic) →* void};
- } =>#t272;
- final core::List<core::int*>* #t276 = core::_GrowableList::•<core::int*>(0);
- {
- asy::Stream<core::int*> :stream = asy::Stream::fromIterable<core::int*>(core::_GrowableList::_literal2<core::int*>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:245:58: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ #t268.{core::Map::[]=}{Invariant}("baz", null){(core::String*, dynamic) →* void};
+ } =>#t268;
+ core::List<core::int*>* list40 = block {
+ final core::List<core::int*>* #t270 = core::_GrowableList::•<core::int*>(0);
+ {
+ asy::Stream<core::int*> :stream = asy::Stream::fromIterable<core::int*>(core::_GrowableList::_literal2<core::int*>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:245:58: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var list40 = [await for (int i in Stream.fromIterable([\"not\", \"int\"])) i];
^" in "not" as{TypeError} core::int*, invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:245:65: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var list40 = [await for (int i in Stream.fromIterable([\"not\", \"int\"])) i];
^" in "int" as{TypeError} core::int*));
- asy::_StreamIterator<core::int*>* :for-iterator = new asy::_StreamIterator::•<core::int*>(:stream);
- try
- #L5:
- while (true) {
- dynamic #t277 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t278 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- core::int* i = :for-iterator.{asy::_StreamIterator::current}{core::int*};
- #t276.{core::List::add}{Invariant}(i){(core::int*) →* void};
- }
- else
- break #L5;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int*>?} == null)) {
- [yield] let dynamic #t279 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ asy::_StreamIterator<core::int*>* :for-iterator = new asy::_StreamIterator::•<core::int*>(:stream);
+ try
+ while (let dynamic #t271 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ core::int* i = :for-iterator.{asy::_StreamIterator::current}{core::int*};
+ #t270.{core::List::add}{Invariant}(i){(core::int*) →* void};
}
- core::List<core::int*>* list40 = block {} =>#t276;
- final core::Set<core::int*>* #t280 = new col::_CompactLinkedHashSet::•<core::int*>();
- {
- asy::Stream<core::int*> :stream = asy::Stream::fromIterable<core::int*>(core::_GrowableList::_literal2<core::int*>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:246:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int*>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ } =>#t270;
+ core::Set<core::int*>* set40 = block {
+ final core::Set<core::int*>* #t272 = new col::_CompactLinkedHashSet::•<core::int*>();
+ {
+ asy::Stream<core::int*> :stream = asy::Stream::fromIterable<core::int*>(core::_GrowableList::_literal2<core::int*>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:246:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var set40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) i, null};
^" in "not" as{TypeError} core::int*, invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:246:64: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var set40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) i, null};
^" in "int" as{TypeError} core::int*));
- asy::_StreamIterator<core::int*>* :for-iterator = new asy::_StreamIterator::•<core::int*>(:stream);
- try
- #L6:
- while (true) {
- dynamic #t281 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t282 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- core::int* i = :for-iterator.{asy::_StreamIterator::current}{core::int*};
- #t280.{core::Set::add}{Invariant}(i){(core::int*) →* core::bool*};
- }
- else
- break #L6;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int*>?} == null)) {
- [yield] let dynamic #t283 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ asy::_StreamIterator<core::int*>* :for-iterator = new asy::_StreamIterator::•<core::int*>(:stream);
+ try
+ while (let dynamic #t273 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ core::int* i = :for-iterator.{asy::_StreamIterator::current}{core::int*};
+ #t272.{core::Set::add}{Invariant}(i){(core::int*) →* core::bool*};
}
- core::Set<core::int*>* set40 = block {
- #t280.{core::Set::add}{Invariant}(null){(core::int*) →* core::bool*};
- } =>#t280;
- final core::Map<core::String*, core::int*>* #t284 = <core::String*, core::int*>{};
- {
- asy::Stream<core::int*> :stream = asy::Stream::fromIterable<core::int*>(core::_GrowableList::_literal2<core::int*>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:247:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int*>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ #t272.{core::Set::add}{Invariant}(null){(core::int*) →* core::bool*};
+ } =>#t272;
+ core::Map<core::String*, core::int*>* map40 = block {
+ final core::Map<core::String*, core::int*>* #t274 = <core::String*, core::int*>{};
+ {
+ asy::Stream<core::int*> :stream = asy::Stream::fromIterable<core::int*>(core::_GrowableList::_literal2<core::int*>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:247:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var map40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) \"bar\": i, \"baz\": null};
^" in "not" as{TypeError} core::int*, invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:247:64: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var map40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) \"bar\": i, \"baz\": null};
^" in "int" as{TypeError} core::int*));
- asy::_StreamIterator<core::int*>* :for-iterator = new asy::_StreamIterator::•<core::int*>(:stream);
- try
- #L7:
- while (true) {
- dynamic #t285 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t286 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- core::int* i = :for-iterator.{asy::_StreamIterator::current}{core::int*};
- #t284.{core::Map::[]=}{Invariant}("bar", i){(core::String*, core::int*) →* void};
- }
- else
- break #L7;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int*>?} == null)) {
- [yield] let dynamic #t287 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ asy::_StreamIterator<core::int*>* :for-iterator = new asy::_StreamIterator::•<core::int*>(:stream);
+ try
+ while (let dynamic #t275 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ core::int* i = :for-iterator.{asy::_StreamIterator::current}{core::int*};
+ #t274.{core::Map::[]=}{Invariant}("bar", i){(core::String*, core::int*) →* void};
}
- core::Map<core::String*, core::int*>* map40 = block {
- #t284.{core::Map::[]=}{Invariant}("baz", null){(core::String*, core::int*) →* void};
- } =>#t284;
- core::List<core::int*>* list50 = block {
- final core::List<core::int*>* #t288 = core::_GrowableList::•<core::int*>(0);
- for (; ; )
- #t288.{core::List::add}{Invariant}(42){(core::int*) →* void};
- } =>#t288;
- core::Set<core::int*>* set50 = block {
- final core::Set<core::int*>* #t289 = new col::_CompactLinkedHashSet::•<core::int*>();
- for (; ; )
- #t289.{core::Set::add}{Invariant}(42){(core::int*) →* core::bool*};
- #t289.{core::Set::add}{Invariant}(null){(core::int*) →* core::bool*};
- } =>#t289;
- core::Map<core::String*, core::int*>* map50 = block {
- final core::Map<core::String*, core::int*>* #t290 = <core::String*, core::int*>{};
- for (; ; )
- #t290.{core::Map::[]=}{Invariant}("bar", 42){(core::String*, core::int*) →* void};
- #t290.{core::Map::[]=}{Invariant}("baz", null){(core::String*, core::int*) →* void};
- } =>#t290;
- core::List<core::int*>* list60 = block {
- final core::List<core::int*>* #t291 = core::_GrowableList::•<core::int*>(0);
- for (; invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:251:24: Error: A value of type 'String' can't be assigned to a variable of type 'bool'.
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int*>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ #t274.{core::Map::[]=}{Invariant}("baz", null){(core::String*, core::int*) →* void};
+ } =>#t274;
+ core::List<core::int*>* list50 = block {
+ final core::List<core::int*>* #t276 = core::_GrowableList::•<core::int*>(0);
+ for (; ; )
+ #t276.{core::List::add}{Invariant}(42){(core::int*) →* void};
+ } =>#t276;
+ core::Set<core::int*>* set50 = block {
+ final core::Set<core::int*>* #t277 = new col::_CompactLinkedHashSet::•<core::int*>();
+ for (; ; )
+ #t277.{core::Set::add}{Invariant}(42){(core::int*) →* core::bool*};
+ #t277.{core::Set::add}{Invariant}(null){(core::int*) →* core::bool*};
+ } =>#t277;
+ core::Map<core::String*, core::int*>* map50 = block {
+ final core::Map<core::String*, core::int*>* #t278 = <core::String*, core::int*>{};
+ for (; ; )
+ #t278.{core::Map::[]=}{Invariant}("bar", 42){(core::String*, core::int*) →* void};
+ #t278.{core::Map::[]=}{Invariant}("baz", null){(core::String*, core::int*) →* void};
+ } =>#t278;
+ core::List<core::int*>* list60 = block {
+ final core::List<core::int*>* #t279 = core::_GrowableList::•<core::int*>(0);
+ for (; invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:251:24: Error: A value of type 'String' can't be assigned to a variable of type 'bool'.
var list60 = [for (; \"not bool\";) 42];
^" in "not bool" as{TypeError} core::bool*; )
- #t291.{core::List::add}{Invariant}(42){(core::int*) →* void};
- } =>#t291;
- core::Set<core::int*>* set60 = block {
- final core::Set<core::int*>* #t292 = new col::_CompactLinkedHashSet::•<core::int*>();
- for (; invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:252:23: Error: A value of type 'String' can't be assigned to a variable of type 'bool'.
+ #t279.{core::List::add}{Invariant}(42){(core::int*) →* void};
+ } =>#t279;
+ core::Set<core::int*>* set60 = block {
+ final core::Set<core::int*>* #t280 = new col::_CompactLinkedHashSet::•<core::int*>();
+ for (; invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:252:23: Error: A value of type 'String' can't be assigned to a variable of type 'bool'.
var set60 = {for (; \"not bool\";) 42, null};
^" in "not bool" as{TypeError} core::bool*; )
- #t292.{core::Set::add}{Invariant}(42){(core::int*) →* core::bool*};
- #t292.{core::Set::add}{Invariant}(null){(core::int*) →* core::bool*};
- } =>#t292;
- core::Map<core::String*, core::int*>* map60 = block {
- final core::Map<core::String*, core::int*>* #t293 = <core::String*, core::int*>{};
- for (; invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:253:23: Error: A value of type 'String' can't be assigned to a variable of type 'bool'.
+ #t280.{core::Set::add}{Invariant}(42){(core::int*) →* core::bool*};
+ #t280.{core::Set::add}{Invariant}(null){(core::int*) →* core::bool*};
+ } =>#t280;
+ core::Map<core::String*, core::int*>* map60 = block {
+ final core::Map<core::String*, core::int*>* #t281 = <core::String*, core::int*>{};
+ for (; invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference.dart:253:23: Error: A value of type 'String' can't be assigned to a variable of type 'bool'.
var map60 = {for (; \"not bool\";) \"bar\": 42, \"baz\": null};
^" in "not bool" as{TypeError} core::bool*; )
- #t293.{core::Map::[]=}{Invariant}("bar", 42){(core::String*, core::int*) →* void};
- #t293.{core::Map::[]=}{Invariant}("baz", null){(core::String*, core::int*) →* void};
- } =>#t293;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ #t281.{core::Map::[]=}{Invariant}("bar", 42){(core::String*, core::int*) →* void};
+ #t281.{core::Map::[]=}{Invariant}("baz", null){(core::String*, core::int*) →* void};
+ } =>#t281;
}
static method testForElementErrorsNotAsync(asy::Stream<core::int*>* stream) → dynamic {
block {
- final core::List<core::int*>* #t294 = core::_GrowableList::•<core::int*>(0);
+ final core::List<core::int*>* #t282 = core::_GrowableList::•<core::int*>(0);
await for (core::int* i in stream)
- #t294.{core::List::add}{Invariant}(i){(core::int*) →* void};
- } =>#t294;
+ #t282.{core::List::add}{Invariant}(i){(core::int*) →* void};
+ } =>#t282;
block {
- final core::Set<core::int*>* #t295 = new col::_CompactLinkedHashSet::•<core::int*>();
+ final core::Set<core::int*>* #t283 = new col::_CompactLinkedHashSet::•<core::int*>();
await for (core::int* i in stream)
- #t295.{core::Set::add}{Invariant}(i){(core::int*) →* core::bool*};
- } =>#t295;
+ #t283.{core::Set::add}{Invariant}(i){(core::int*) →* core::bool*};
+ } =>#t283;
block {
- final core::Map<core::String*, core::int*>* #t296 = <core::String*, core::int*>{};
+ final core::Map<core::String*, core::int*>* #t284 = <core::String*, core::int*>{};
await for (core::int* i in stream)
- #t296.{core::Map::[]=}{Invariant}("bar", i){(core::String*, core::int*) →* void};
- } =>#t296;
+ #t284.{core::Map::[]=}{Invariant}("bar", i){(core::String*, core::int*) →* void};
+ } =>#t284;
}
static method testPromotion(self::A* a) → dynamic {
core::List<core::int*>* list10 = block {
- final core::List<core::int*>* #t297 = core::_GrowableList::•<core::int*>(0);
+ final core::List<core::int*>* #t285 = core::_GrowableList::•<core::int*>(0);
if(a is self::B*)
- #t297.{core::List::add}{Invariant}(a{self::B*}.{self::B::foo}{core::int*}){(core::int*) →* void};
- } =>#t297;
+ #t285.{core::List::add}{Invariant}(a{self::B*}.{self::B::foo}{core::int*}){(core::int*) →* void};
+ } =>#t285;
core::Set<core::int*>* set10 = block {
- final core::Set<core::int*>* #t298 = new col::_CompactLinkedHashSet::•<core::int*>();
+ final core::Set<core::int*>* #t286 = new col::_CompactLinkedHashSet::•<core::int*>();
if(a is self::B*)
- #t298.{core::Set::add}{Invariant}(a{self::B*}.{self::B::foo}{core::int*}){(core::int*) →* core::bool*};
- } =>#t298;
+ #t286.{core::Set::add}{Invariant}(a{self::B*}.{self::B::foo}{core::int*}){(core::int*) →* core::bool*};
+ } =>#t286;
core::Map<core::int*, core::int*>* map10 = block {
- final core::Map<core::int*, core::int*>* #t299 = <core::int*, core::int*>{};
+ final core::Map<core::int*, core::int*>* #t287 = <core::int*, core::int*>{};
if(a is self::B*)
- #t299.{core::Map::[]=}{Invariant}(a{self::B*}.{self::B::foo}{core::int*}, a{self::B*}.{self::B::foo}{core::int*}){(core::int*, core::int*) →* void};
- } =>#t299;
+ #t287.{core::Map::[]=}{Invariant}(a{self::B*}.{self::B::foo}{core::int*}, a{self::B*}.{self::B::foo}{core::int*}){(core::int*, core::int*) →* void};
+ } =>#t287;
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/control_flow_collection_inference2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/control_flow_collection_inference2.dart.weak.transformed.expect
index e2cc511..3cd0d2b 100644
--- a/pkg/front_end/testcases/general/control_flow_collection_inference2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/control_flow_collection_inference2.dart.weak.transformed.expect
@@ -425,7 +425,6 @@
import "dart:core" as core;
import "dart:collection" as col;
import "dart:async" as asy;
-import "dart:_internal" as _in;
class A extends core::Object {
synthetic constructor •() → self::A
@@ -1933,589 +1932,510 @@
#t235.{core::Map::[]=}{Invariant}(i, i){(core::int, core::int) → void};
} =>#t235;
}
-static method testForElementErrors(core::Map<core::int, core::int> map, core::List<core::int> list) → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- dynamic :exception0;
- dynamic :stack_trace0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- block {
- final core::List<core::int> #t236 = core::_GrowableList::•<core::int>(0);
- for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
- #t236.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:210:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+static method testForElementErrors(core::Map<core::int, core::int> map, core::List<core::int> list) → dynamic async /* futureValueType= dynamic */ {
+ block {
+ final core::List<core::int> #t236 = core::_GrowableList::•<core::int>(0);
+ for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
+ #t236.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:210:45: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
<int>[for (int i = 0; oracle(\"foo\"); i++) \"bar\"];
^" in "bar" as{TypeError,ForNonNullableByDefault} core::int){(core::int) → void};
- } =>#t236;
- block {
- final core::Set<core::int?> #t237 = new col::_CompactLinkedHashSet::•<core::int?>();
- for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
- #t237.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:211:46: Error: A value of type 'String' can't be assigned to a variable of type 'int?'.
+ } =>#t236;
+ block {
+ final core::Set<core::int?> #t237 = new col::_CompactLinkedHashSet::•<core::int?>();
+ for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
+ #t237.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:211:46: Error: A value of type 'String' can't be assigned to a variable of type 'int?'.
<int?>{for (int i = 0; oracle(\"foo\"); i++) \"bar\", null};
^" in "bar" as{TypeError,ForNonNullableByDefault} core::int?){(core::int?) → core::bool};
- #t237.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
- } =>#t237;
- block {
- final core::Map<core::int, core::int?> #t238 = <core::int, core::int?>{};
- for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
- #t238.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:212:51: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ #t237.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
+ } =>#t237;
+ block {
+ final core::Map<core::int, core::int?> #t238 = <core::int, core::int?>{};
+ for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
+ #t238.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:212:51: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
<int, int?>{for (int i = 0; oracle(\"foo\"); i++) \"bar\": \"bar\", \"baz\": null};
^" in "bar" as{TypeError,ForNonNullableByDefault} core::int, invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:212:58: Error: A value of type 'String' can't be assigned to a variable of type 'int?'.
<int, int?>{for (int i = 0; oracle(\"foo\"); i++) \"bar\": \"bar\", \"baz\": null};
^" in "bar" as{TypeError,ForNonNullableByDefault} core::int?){(core::int, core::int?) → void};
- #t238.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:212:65: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ #t238.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:212:65: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
<int, int?>{for (int i = 0; oracle(\"foo\"); i++) \"bar\": \"bar\", \"baz\": null};
^" in "baz" as{TypeError,ForNonNullableByDefault} core::int, null){(core::int, core::int?) → void};
- } =>#t238;
- block {
- final core::List<core::int> #t239 = core::_GrowableList::•<core::int>(0);
- for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
- #t239.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::int>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:213:49: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ } =>#t238;
+ block {
+ final core::List<core::int> #t239 = core::_GrowableList::•<core::int>(0);
+ for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
+ #t239.{core::List::addAll}{Invariant}(core::_GrowableList::_literal1<core::int>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:213:49: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
<int>[for (int i = 0; oracle(\"foo\"); i++) ...[\"bar\"]];
^" in "bar" as{TypeError,ForNonNullableByDefault} core::int)){(core::Iterable<core::int>) → void};
- } =>#t239;
- block {
- final core::Set<core::int?> #t240 = new col::_CompactLinkedHashSet::•<core::int?>();
- for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
- #t240.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::int?>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:214:50: Error: A value of type 'String' can't be assigned to a variable of type 'int?'.
+ } =>#t239;
+ block {
+ final core::Set<core::int?> #t240 = new col::_CompactLinkedHashSet::•<core::int?>();
+ for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
+ #t240.{core::Set::addAll}{Invariant}(core::_GrowableList::_literal1<core::int?>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:214:50: Error: A value of type 'String' can't be assigned to a variable of type 'int?'.
<int?>{for (int i = 0; oracle(\"foo\"); i++) ...[\"bar\"], null};
^" in "bar" as{TypeError,ForNonNullableByDefault} core::int?)){(core::Iterable<core::int?>) → void};
- #t240.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
- } =>#t240;
- block {
- final core::Map<core::int, core::int?> #t241 = <core::int, core::int?>{};
- for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int}) {
- core::Iterator<core::MapEntry<core::int, core::int?>> :sync-for-iterator = <core::int, core::int?>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:215:55: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ #t240.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
+ } =>#t240;
+ block {
+ final core::Map<core::int, core::int?> #t241 = <core::int, core::int?>{};
+ for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int}) {
+ core::Iterator<core::MapEntry<core::int, core::int?>> :sync-for-iterator = <core::int, core::int?>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:215:55: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
<int, int?>{for (int i = 0; oracle(\"foo\"); i++) ...{\"bar\": \"bar\"}, \"baz\": null};
^" in "bar" as{TypeError,ForNonNullableByDefault} core::int: invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:215:62: Error: A value of type 'String' can't be assigned to a variable of type 'int?'.
<int, int?>{for (int i = 0; oracle(\"foo\"); i++) ...{\"bar\": \"bar\"}, \"baz\": null};
^" in "bar" as{TypeError,ForNonNullableByDefault} core::int?}.{core::Map::entries}{core::Iterable<core::MapEntry<core::int, core::int?>>}.{core::Iterable::iterator}{core::Iterator<core::MapEntry<core::int, core::int?>>};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- final core::MapEntry<core::int, core::int?> #t242 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int?>};
- #t241.{core::Map::[]=}{Invariant}(#t242.{core::MapEntry::key}{core::int}, #t242.{core::MapEntry::value}{core::int?}){(core::int, core::int?) → void};
- }
- }
- #t241.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:215:70: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ final core::MapEntry<core::int, core::int?> #t242 = :sync-for-iterator.{core::Iterator::current}{core::MapEntry<core::int, core::int?>};
+ #t241.{core::Map::[]=}{Invariant}(#t242.{core::MapEntry::key}{core::int}, #t242.{core::MapEntry::value}{core::int?}){(core::int, core::int?) → void};
+ }
+ }
+ #t241.{core::Map::[]=}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:215:70: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
<int, int?>{for (int i = 0; oracle(\"foo\"); i++) ...{\"bar\": \"bar\"}, \"baz\": null};
^" in "baz" as{TypeError,ForNonNullableByDefault} core::int, null){(core::int, core::int?) → void};
- } =>#t241;
- block {
- final core::List<core::int> #t243 = core::_GrowableList::•<core::int>(0);
- for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
- #t243.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:216:48: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
+ } =>#t241;
+ block {
+ final core::List<core::int> #t243 = core::_GrowableList::•<core::int>(0);
+ for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
+ #t243.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:216:48: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
- 'Map' is from 'dart:core'.
<int>[for (int i = 0; oracle(\"foo\"); i++) ...map];
^"){(core::int) → void};
- } =>#t243;
- block {
- final core::Set<core::int?> #t244 = new col::_CompactLinkedHashSet::•<core::int?>();
- for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
- #t244.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:217:49: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
+ } =>#t243;
+ block {
+ final core::Set<core::int?> #t244 = new col::_CompactLinkedHashSet::•<core::int?>();
+ for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
+ #t244.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:217:49: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
- 'Map' is from 'dart:core'.
<int?>{for (int i = 0; oracle(\"foo\"); i++) ...map, null};
^"){(core::int?) → core::bool};
- #t244.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
- } =>#t244;
- <core::int, core::int?>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:218:54: Error: Unexpected type 'List<int>' of a map spread entry. Expected 'dynamic' or a Map.
+ #t244.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
+ } =>#t244;
+ <core::int, core::int?>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:218:54: Error: Unexpected type 'List<int>' of a map spread entry. Expected 'dynamic' or a Map.
- 'List' is from 'dart:core'.
<int, int?>{for (int i = 0; oracle(\"foo\"); i++) ...list, 42: null};
^": null, invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:218:54: Error: Unexpected type 'List<int>' of a map spread entry. Expected 'dynamic' or a Map.
- 'List' is from 'dart:core'.
<int, int?>{for (int i = 0; oracle(\"foo\"); i++) ...list, 42: null};
^": null};
- block {
- final core::List<core::String> #t245 = core::_GrowableList::•<core::String>(0);
- for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
- if(self::oracle<dynamic>() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool)
- #t245.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:219:62: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
+ block {
+ final core::List<core::String> #t245 = core::_GrowableList::•<core::String>(0);
+ for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
+ if(self::oracle<dynamic>() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool)
+ #t245.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:219:62: Error: A value of type 'int' can't be assigned to a variable of type 'String'.
<String>[for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else 3.14];
^" in 42 as{TypeError,ForNonNullableByDefault} core::String){(core::String) → void};
- else
- #t245.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:219:70: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
+ else
+ #t245.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:219:70: Error: A value of type 'double' can't be assigned to a variable of type 'String'.
<String>[for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else 3.14];
^" in 3.14 as{TypeError,ForNonNullableByDefault} core::String){(core::String) → void};
- } =>#t245;
- block {
- final core::Set<core::String?> #t246 = new col::_CompactLinkedHashSet::•<core::String?>();
- for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
- if(self::oracle<dynamic>() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool)
- #t246.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:220:63: Error: A value of type 'int' can't be assigned to a variable of type 'String?'.
+ } =>#t245;
+ block {
+ final core::Set<core::String?> #t246 = new col::_CompactLinkedHashSet::•<core::String?>();
+ for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
+ if(self::oracle<dynamic>() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool)
+ #t246.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:220:63: Error: A value of type 'int' can't be assigned to a variable of type 'String?'.
<String?>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else 3.14, null};
^" in 42 as{TypeError,ForNonNullableByDefault} core::String?){(core::String?) → core::bool};
- else
- #t246.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:220:71: Error: A value of type 'double' can't be assigned to a variable of type 'String?'.
+ else
+ #t246.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:220:71: Error: A value of type 'double' can't be assigned to a variable of type 'String?'.
<String?>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else 3.14, null};
^" in 3.14 as{TypeError,ForNonNullableByDefault} core::String?){(core::String?) → core::bool};
- #t246.{core::Set::add}{Invariant}(null){(core::String?) → core::bool};
- } =>#t246;
- block {
- final core::Map<core::String, core::String?> #t247 = <core::String, core::String?>{};
- for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
- if(self::oracle<dynamic>() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool)
- #t247.{core::Map::[]=}{Invariant}("bar", invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:221:78: Error: A value of type 'int' can't be assigned to a variable of type 'String?'.
+ #t246.{core::Set::add}{Invariant}(null){(core::String?) → core::bool};
+ } =>#t246;
+ block {
+ final core::Map<core::String, core::String?> #t247 = <core::String, core::String?>{};
+ for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
+ if(self::oracle<dynamic>() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool)
+ #t247.{core::Map::[]=}{Invariant}("bar", invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:221:78: Error: A value of type 'int' can't be assigned to a variable of type 'String?'.
<String, String?>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) \"bar\": 42 else \"bar\": 3.14, \"baz\": null};
^" in 42 as{TypeError,ForNonNullableByDefault} core::String?){(core::String, core::String?) → void};
- else
- #t247.{core::Map::[]=}{Invariant}("bar", invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:221:93: Error: A value of type 'double' can't be assigned to a variable of type 'String?'.
+ else
+ #t247.{core::Map::[]=}{Invariant}("bar", invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:221:93: Error: A value of type 'double' can't be assigned to a variable of type 'String?'.
<String, String?>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) \"bar\": 42 else \"bar\": 3.14, \"baz\": null};
^" in 3.14 as{TypeError,ForNonNullableByDefault} core::String?){(core::String, core::String?) → void};
- #t247.{core::Map::[]=}{Invariant}("baz", null){(core::String, core::String?) → void};
- } =>#t247;
- block {
- final core::List<core::int> #t248 = core::_GrowableList::•<core::int>(0);
- for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
- if(self::oracle<dynamic>() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool)
- #t248.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:222:62: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
+ #t247.{core::Map::[]=}{Invariant}("baz", null){(core::String, core::String?) → void};
+ } =>#t247;
+ block {
+ final core::List<core::int> #t248 = core::_GrowableList::•<core::int>(0);
+ for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
+ if(self::oracle<dynamic>() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool)
+ #t248.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:222:62: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
- 'Map' is from 'dart:core'.
<int>[for (int i = 0; oracle(\"foo\"); i++) if (oracle()) ...map else 42];
^"){(core::int) → void};
- else
- #t248.{core::List::add}{Invariant}(42){(core::int) → void};
- } =>#t248;
- block {
- final core::Set<core::int?> #t249 = new col::_CompactLinkedHashSet::•<core::int?>();
- for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
- if(self::oracle<dynamic>() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool)
- #t249.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:223:63: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
+ else
+ #t248.{core::List::add}{Invariant}(42){(core::int) → void};
+ } =>#t248;
+ block {
+ final core::Set<core::int?> #t249 = new col::_CompactLinkedHashSet::•<core::int?>();
+ for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
+ if(self::oracle<dynamic>() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool)
+ #t249.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:223:63: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
- 'Map' is from 'dart:core'.
<int?>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) ...map else 42, null};
^"){(core::int?) → core::bool};
- else
- #t249.{core::Set::add}{Invariant}(42){(core::int?) → core::bool};
- #t249.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
- } =>#t249;
- <core::String, core::int?>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:224:71: Error: Unexpected type 'List<int>' of a map spread entry. Expected 'dynamic' or a Map.
+ else
+ #t249.{core::Set::add}{Invariant}(42){(core::int?) → core::bool};
+ #t249.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
+ } =>#t249;
+ <core::String, core::int?>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:224:71: Error: Unexpected type 'List<int>' of a map spread entry. Expected 'dynamic' or a Map.
- 'List' is from 'dart:core'.
<String, int?>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) ...list else \"bar\": 42, \"baz\": null};
^": null, invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:224:71: Error: Unexpected type 'List<int>' of a map spread entry. Expected 'dynamic' or a Map.
- 'List' is from 'dart:core'.
<String, int?>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) ...list else \"bar\": 42, \"baz\": null};
^": null};
- block {
- final core::List<core::int> #t250 = core::_GrowableList::•<core::int>(0);
- for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
- if(self::oracle<dynamic>() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool)
- #t250.{core::List::add}{Invariant}(42){(core::int) → void};
- else
- #t250.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:225:70: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
+ block {
+ final core::List<core::int> #t250 = core::_GrowableList::•<core::int>(0);
+ for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
+ if(self::oracle<dynamic>() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool)
+ #t250.{core::List::add}{Invariant}(42){(core::int) → void};
+ else
+ #t250.{core::List::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:225:70: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
- 'Map' is from 'dart:core'.
<int>[for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else ...map];
^"){(core::int) → void};
- } =>#t250;
- block {
- final core::Set<core::int?> #t251 = new col::_CompactLinkedHashSet::•<core::int?>();
- for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
- if(self::oracle<dynamic>() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool)
- #t251.{core::Set::add}{Invariant}(42){(core::int?) → core::bool};
- else
- #t251.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:226:71: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
+ } =>#t250;
+ block {
+ final core::Set<core::int?> #t251 = new col::_CompactLinkedHashSet::•<core::int?>();
+ for (core::int i = 0; self::oracle<core::String>("foo") as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool; i = i.{core::num::+}(1){(core::num) → core::int})
+ if(self::oracle<dynamic>() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool)
+ #t251.{core::Set::add}{Invariant}(42){(core::int?) → core::bool};
+ else
+ #t251.{core::Set::add}{Invariant}(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:226:71: Error: Unexpected type 'Map<int, int>' of a spread. Expected 'dynamic' or an Iterable.
- 'Map' is from 'dart:core'.
<int?>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) 42 else ...map, null};
^"){(core::int?) → core::bool};
- #t251.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
- } =>#t251;
- <core::String, core::int?>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:227:86: Error: Unexpected type 'List<int>' of a map spread entry. Expected 'dynamic' or a Map.
+ #t251.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
+ } =>#t251;
+ <core::String, core::int?>{invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:227:86: Error: Unexpected type 'List<int>' of a map spread entry. Expected 'dynamic' or a Map.
- 'List' is from 'dart:core'.
<String, int?>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) \"bar\": 42 else ...list, \"baz\": null};
^": null, invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:227:86: Error: Unexpected type 'List<int>' of a map spread entry. Expected 'dynamic' or a Map.
- 'List' is from 'dart:core'.
<String, int?>{for (int i = 0; oracle(\"foo\"); i++) if (oracle()) \"bar\": 42 else ...list, \"baz\": null};
^": null};
- final core::int i = 0;
- block {
- final core::List<core::int> #t252 = core::_GrowableList::•<core::int>(0);
- {
- core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::_literal1<core::int>(1).{core::Iterable::iterator}{core::Iterator<core::int>};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- final core::int #t253 = :sync-for-iterator.{core::Iterator::current}{core::int};
- {
- invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:230:14: Error: Can't assign to the final variable 'i'.
+ final core::int i = 0;
+ block {
+ final core::List<core::int> #t252 = core::_GrowableList::•<core::int>(0);
+ {
+ core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::_literal1<core::int>(1).{core::Iterable::iterator}{core::Iterator<core::int>};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ final core::int #t253 = :sync-for-iterator.{core::Iterator::current}{core::int};
+ {
+ invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:230:14: Error: Can't assign to the final variable 'i'.
<int>[for (i in <int>[1]) i];
^";
- #t252.{core::List::add}{Invariant}(i){(core::int) → void};
- }
- }
- }
- } =>#t252;
- block {
- final core::Set<core::int?> #t254 = new col::_CompactLinkedHashSet::•<core::int?>();
- {
- core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::_literal1<core::int>(1).{core::Iterable::iterator}{core::Iterator<core::int>};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- final core::int #t255 = :sync-for-iterator.{core::Iterator::current}{core::int};
- {
- invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:231:15: Error: Can't assign to the final variable 'i'.
+ #t252.{core::List::add}{Invariant}(i){(core::int) → void};
+ }
+ }
+ }
+ } =>#t252;
+ block {
+ final core::Set<core::int?> #t254 = new col::_CompactLinkedHashSet::•<core::int?>();
+ {
+ core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::_literal1<core::int>(1).{core::Iterable::iterator}{core::Iterator<core::int>};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ final core::int #t255 = :sync-for-iterator.{core::Iterator::current}{core::int};
+ {
+ invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:231:15: Error: Can't assign to the final variable 'i'.
<int?>{for (i in <int>[1]) i, null};
^";
- #t254.{core::Set::add}{Invariant}(i){(core::int?) → core::bool};
- }
- }
- }
- #t254.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
- } =>#t254;
- block {
- final core::Map<core::String, core::int?> #t256 = <core::String, core::int?>{};
- {
- core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::_literal1<core::int>(1).{core::Iterable::iterator}{core::Iterator<core::int>};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- final core::int #t257 = :sync-for-iterator.{core::Iterator::current}{core::int};
- {
- invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:232:23: Error: Can't assign to the final variable 'i'.
+ #t254.{core::Set::add}{Invariant}(i){(core::int?) → core::bool};
+ }
+ }
+ }
+ #t254.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
+ } =>#t254;
+ block {
+ final core::Map<core::String, core::int?> #t256 = <core::String, core::int?>{};
+ {
+ core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::_literal1<core::int>(1).{core::Iterable::iterator}{core::Iterator<core::int>};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ final core::int #t257 = :sync-for-iterator.{core::Iterator::current}{core::int};
+ {
+ invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:232:23: Error: Can't assign to the final variable 'i'.
<String, int?>{for (i in <int>[1]) \"bar\": i, \"baz\": null};
^";
- #t256.{core::Map::[]=}{Invariant}("bar", i){(core::String, core::int?) → void};
- }
- }
- }
- #t256.{core::Map::[]=}{Invariant}("baz", null){(core::String, core::int?) → void};
- } =>#t256;
- core::List<dynamic> list10 = block {
- final core::List<dynamic> #t258 = core::_GrowableList::•<dynamic>(0);
- {
- core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:234:31: Error: The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
+ #t256.{core::Map::[]=}{Invariant}("bar", i){(core::String, core::int?) → void};
+ }
+ }
+ }
+ #t256.{core::Map::[]=}{Invariant}("baz", null){(core::String, core::int?) → void};
+ } =>#t256;
+ core::List<dynamic> list10 = block {
+ final core::List<dynamic> #t258 = core::_GrowableList::•<dynamic>(0);
+ {
+ core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:234:31: Error: The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
- 'Iterable' is from 'dart:core'.
var list10 = [for (var i in \"not iterable\") i];
^" in "not iterable" as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>.{core::Iterable::iterator}{core::Iterator<Never>};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- dynamic i = :sync-for-iterator.{core::Iterator::current}{Never};
- #t258.{core::List::add}{Invariant}(i){(dynamic) → void};
- }
- }
- } =>#t258;
- core::Set<dynamic> set10 = block {
- final core::Set<dynamic> #t259 = new col::_CompactLinkedHashSet::•<dynamic>();
- {
- core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:235:30: Error: The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ dynamic i = :sync-for-iterator.{core::Iterator::current}{Never};
+ #t258.{core::List::add}{Invariant}(i){(dynamic) → void};
+ }
+ }
+ } =>#t258;
+ core::Set<dynamic> set10 = block {
+ final core::Set<dynamic> #t259 = new col::_CompactLinkedHashSet::•<dynamic>();
+ {
+ core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:235:30: Error: The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
- 'Iterable' is from 'dart:core'.
var set10 = {for (var i in \"not iterable\") i, null};
^" in "not iterable" as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>.{core::Iterable::iterator}{core::Iterator<Never>};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- dynamic i = :sync-for-iterator.{core::Iterator::current}{Never};
- #t259.{core::Set::add}{Invariant}(i){(dynamic) → core::bool};
- }
- }
- #t259.{core::Set::add}{Invariant}(null){(dynamic) → core::bool};
- } =>#t259;
- core::Map<core::String, dynamic> map10 = block {
- final core::Map<core::String, dynamic> #t260 = <core::String, dynamic>{};
- {
- core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:236:30: Error: The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ dynamic i = :sync-for-iterator.{core::Iterator::current}{Never};
+ #t259.{core::Set::add}{Invariant}(i){(dynamic) → core::bool};
+ }
+ }
+ #t259.{core::Set::add}{Invariant}(null){(dynamic) → core::bool};
+ } =>#t259;
+ core::Map<core::String, dynamic> map10 = block {
+ final core::Map<core::String, dynamic> #t260 = <core::String, dynamic>{};
+ {
+ core::Iterator<Never> :sync-for-iterator = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:236:30: Error: The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
- 'Iterable' is from 'dart:core'.
var map10 = {for (var i in \"not iterable\") \"bar\": i, \"baz\": null};
^" in "not iterable" as{TypeError,ForNonNullableByDefault} core::Iterable<dynamic>.{core::Iterable::iterator}{core::Iterator<Never>};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- dynamic i = :sync-for-iterator.{core::Iterator::current}{Never};
- #t260.{core::Map::[]=}{Invariant}("bar", i){(core::String, dynamic) → void};
- }
- }
- #t260.{core::Map::[]=}{Invariant}("baz", null){(core::String, dynamic) → void};
- } =>#t260;
- core::List<core::int> list20 = block {
- final core::List<core::int> #t261 = core::_GrowableList::•<core::int>(0);
- {
- core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::_literal2<core::int>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:237:32: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ dynamic i = :sync-for-iterator.{core::Iterator::current}{Never};
+ #t260.{core::Map::[]=}{Invariant}("bar", i){(core::String, dynamic) → void};
+ }
+ }
+ #t260.{core::Map::[]=}{Invariant}("baz", null){(core::String, dynamic) → void};
+ } =>#t260;
+ core::List<core::int> list20 = block {
+ final core::List<core::int> #t261 = core::_GrowableList::•<core::int>(0);
+ {
+ core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::_literal2<core::int>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:237:32: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var list20 = [for (int i in [\"not\", \"int\"]) i];
^" in "not" as{TypeError,ForNonNullableByDefault} core::int, invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:237:39: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var list20 = [for (int i in [\"not\", \"int\"]) i];
^" in "int" as{TypeError,ForNonNullableByDefault} core::int).{core::Iterable::iterator}{core::Iterator<core::int>};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- core::int i = :sync-for-iterator.{core::Iterator::current}{core::int};
- #t261.{core::List::add}{Invariant}(i){(core::int) → void};
- }
- }
- } =>#t261;
- core::Set<core::int?> set20 = block {
- final core::Set<core::int?> #t262 = new col::_CompactLinkedHashSet::•<core::int?>();
- {
- core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::_literal2<core::int>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:238:31: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ core::int i = :sync-for-iterator.{core::Iterator::current}{core::int};
+ #t261.{core::List::add}{Invariant}(i){(core::int) → void};
+ }
+ }
+ } =>#t261;
+ core::Set<core::int?> set20 = block {
+ final core::Set<core::int?> #t262 = new col::_CompactLinkedHashSet::•<core::int?>();
+ {
+ core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::_literal2<core::int>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:238:31: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var set20 = {for (int i in [\"not\", \"int\"]) i, null};
^" in "not" as{TypeError,ForNonNullableByDefault} core::int, invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:238:38: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var set20 = {for (int i in [\"not\", \"int\"]) i, null};
^" in "int" as{TypeError,ForNonNullableByDefault} core::int).{core::Iterable::iterator}{core::Iterator<core::int>};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- core::int i = :sync-for-iterator.{core::Iterator::current}{core::int};
- #t262.{core::Set::add}{Invariant}(i){(core::int?) → core::bool};
- }
- }
- #t262.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
- } =>#t262;
- core::Map<core::String, core::int?> map20 = block {
- final core::Map<core::String, core::int?> #t263 = <core::String, core::int?>{};
- {
- core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::_literal2<core::int>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:239:31: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ core::int i = :sync-for-iterator.{core::Iterator::current}{core::int};
+ #t262.{core::Set::add}{Invariant}(i){(core::int?) → core::bool};
+ }
+ }
+ #t262.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
+ } =>#t262;
+ core::Map<core::String, core::int?> map20 = block {
+ final core::Map<core::String, core::int?> #t263 = <core::String, core::int?>{};
+ {
+ core::Iterator<core::int> :sync-for-iterator = core::_GrowableList::_literal2<core::int>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:239:31: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var map20 = {for (int i in [\"not\", \"int\"]) \"bar\": i, \"baz\": null};
^" in "not" as{TypeError,ForNonNullableByDefault} core::int, invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:239:38: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var map20 = {for (int i in [\"not\", \"int\"]) \"bar\": i, \"baz\": null};
^" in "int" as{TypeError,ForNonNullableByDefault} core::int).{core::Iterable::iterator}{core::Iterator<core::int>};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- core::int i = :sync-for-iterator.{core::Iterator::current}{core::int};
- #t263.{core::Map::[]=}{Invariant}("bar", i){(core::String, core::int?) → void};
- }
- }
- #t263.{core::Map::[]=}{Invariant}("baz", null){(core::String, core::int?) → void};
- } =>#t263;
- final core::List<dynamic> #t264 = core::_GrowableList::•<dynamic>(0);
- {
- Never :stream = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:240:37: Error: The type 'String' used in the 'for' loop must implement 'Stream<dynamic>'.
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ core::int i = :sync-for-iterator.{core::Iterator::current}{core::int};
+ #t263.{core::Map::[]=}{Invariant}("bar", i){(core::String, core::int?) → void};
+ }
+ }
+ #t263.{core::Map::[]=}{Invariant}("baz", null){(core::String, core::int?) → void};
+ } =>#t263;
+ core::List<dynamic> list30 = block {
+ final core::List<dynamic> #t264 = core::_GrowableList::•<dynamic>(0);
+ {
+ Never :stream = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:240:37: Error: The type 'String' used in the 'for' loop must implement 'Stream<dynamic>'.
- 'Stream' is from 'dart:async'.
var list30 = [await for (var i in \"not stream\") i];
^" in "not stream" as{TypeError,ForNonNullableByDefault} asy::Stream<dynamic>;
- asy::_StreamIterator<dynamic>? :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
- try
- #L2:
- while (true) {
- dynamic #t265 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t266 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- dynamic i = :for-iterator.{asy::_StreamIterator::current}{dynamic};
- #t264.{core::List::add}{Invariant}(i){(dynamic) → void};
- }
- else
- break #L2;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
- [yield] let dynamic #t267 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ asy::_StreamIterator<dynamic>? :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
+ try
+ while (let dynamic #t265 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ dynamic i = :for-iterator.{asy::_StreamIterator::current}{dynamic};
+ #t264.{core::List::add}{Invariant}(i){(dynamic) → void};
}
- core::List<dynamic> list30 = block {} =>#t264;
- final core::Set<dynamic> #t268 = new col::_CompactLinkedHashSet::•<dynamic>();
- {
- Never :stream = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:241:36: Error: The type 'String' used in the 'for' loop must implement 'Stream<dynamic>'.
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ } =>#t264;
+ core::Set<dynamic> set30 = block {
+ final core::Set<dynamic> #t266 = new col::_CompactLinkedHashSet::•<dynamic>();
+ {
+ Never :stream = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:241:36: Error: The type 'String' used in the 'for' loop must implement 'Stream<dynamic>'.
- 'Stream' is from 'dart:async'.
var set30 = {await for (var i in \"not stream\") i, null};
^" in "not stream" as{TypeError,ForNonNullableByDefault} asy::Stream<dynamic>;
- asy::_StreamIterator<dynamic>? :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
- try
- #L3:
- while (true) {
- dynamic #t269 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t270 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- dynamic i = :for-iterator.{asy::_StreamIterator::current}{dynamic};
- #t268.{core::Set::add}{Invariant}(i){(dynamic) → core::bool};
- }
- else
- break #L3;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
- [yield] let dynamic #t271 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ asy::_StreamIterator<dynamic>? :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
+ try
+ while (let dynamic #t267 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ dynamic i = :for-iterator.{asy::_StreamIterator::current}{dynamic};
+ #t266.{core::Set::add}{Invariant}(i){(dynamic) → core::bool};
}
- core::Set<dynamic> set30 = block {
- #t268.{core::Set::add}{Invariant}(null){(dynamic) → core::bool};
- } =>#t268;
- final core::Map<core::String, dynamic> #t272 = <core::String, dynamic>{};
- {
- Never :stream = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:242:36: Error: The type 'String' used in the 'for' loop must implement 'Stream<dynamic>'.
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ #t266.{core::Set::add}{Invariant}(null){(dynamic) → core::bool};
+ } =>#t266;
+ core::Map<core::String, dynamic> map30 = block {
+ final core::Map<core::String, dynamic> #t268 = <core::String, dynamic>{};
+ {
+ Never :stream = invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:242:36: Error: The type 'String' used in the 'for' loop must implement 'Stream<dynamic>'.
- 'Stream' is from 'dart:async'.
var map30 = {await for (var i in \"not stream\") \"bar\": i, \"baz\": null};
^" in "not stream" as{TypeError,ForNonNullableByDefault} asy::Stream<dynamic>;
- asy::_StreamIterator<dynamic>? :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
- try
- #L4:
- while (true) {
- dynamic #t273 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t274 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- dynamic i = :for-iterator.{asy::_StreamIterator::current}{dynamic};
- #t272.{core::Map::[]=}{Invariant}("bar", i){(core::String, dynamic) → void};
- }
- else
- break #L4;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
- [yield] let dynamic #t275 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ asy::_StreamIterator<dynamic>? :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
+ try
+ while (let dynamic #t269 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ dynamic i = :for-iterator.{asy::_StreamIterator::current}{dynamic};
+ #t268.{core::Map::[]=}{Invariant}("bar", i){(core::String, dynamic) → void};
}
- core::Map<core::String, dynamic> map30 = block {
- #t272.{core::Map::[]=}{Invariant}("baz", null){(core::String, dynamic) → void};
- } =>#t272;
- final core::List<core::int> #t276 = core::_GrowableList::•<core::int>(0);
- {
- asy::Stream<core::int> :stream = asy::Stream::fromIterable<core::int>(core::_GrowableList::_literal2<core::int>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:243:58: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ #t268.{core::Map::[]=}{Invariant}("baz", null){(core::String, dynamic) → void};
+ } =>#t268;
+ core::List<core::int> list40 = block {
+ final core::List<core::int> #t270 = core::_GrowableList::•<core::int>(0);
+ {
+ asy::Stream<core::int> :stream = asy::Stream::fromIterable<core::int>(core::_GrowableList::_literal2<core::int>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:243:58: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var list40 = [await for (int i in Stream.fromIterable([\"not\", \"int\"])) i];
^" in "not" as{TypeError,ForNonNullableByDefault} core::int, invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:243:65: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var list40 = [await for (int i in Stream.fromIterable([\"not\", \"int\"])) i];
^" in "int" as{TypeError,ForNonNullableByDefault} core::int));
- asy::_StreamIterator<core::int>? :for-iterator = new asy::_StreamIterator::•<core::int>(:stream);
- try
- #L5:
- while (true) {
- dynamic #t277 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t278 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- core::int i = :for-iterator.{asy::_StreamIterator::current}{core::int};
- #t276.{core::List::add}{Invariant}(i){(core::int) → void};
- }
- else
- break #L5;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int>?} == null)) {
- [yield] let dynamic #t279 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ asy::_StreamIterator<core::int>? :for-iterator = new asy::_StreamIterator::•<core::int>(:stream);
+ try
+ while (let dynamic #t271 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ core::int i = :for-iterator.{asy::_StreamIterator::current}{core::int};
+ #t270.{core::List::add}{Invariant}(i){(core::int) → void};
}
- core::List<core::int> list40 = block {} =>#t276;
- final core::Set<core::int?> #t280 = new col::_CompactLinkedHashSet::•<core::int?>();
- {
- asy::Stream<core::int> :stream = asy::Stream::fromIterable<core::int>(core::_GrowableList::_literal2<core::int>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:244:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ } =>#t270;
+ core::Set<core::int?> set40 = block {
+ final core::Set<core::int?> #t272 = new col::_CompactLinkedHashSet::•<core::int?>();
+ {
+ asy::Stream<core::int> :stream = asy::Stream::fromIterable<core::int>(core::_GrowableList::_literal2<core::int>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:244:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var set40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) i, null};
^" in "not" as{TypeError,ForNonNullableByDefault} core::int, invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:244:64: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var set40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) i, null};
^" in "int" as{TypeError,ForNonNullableByDefault} core::int));
- asy::_StreamIterator<core::int>? :for-iterator = new asy::_StreamIterator::•<core::int>(:stream);
- try
- #L6:
- while (true) {
- dynamic #t281 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t282 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- core::int i = :for-iterator.{asy::_StreamIterator::current}{core::int};
- #t280.{core::Set::add}{Invariant}(i){(core::int?) → core::bool};
- }
- else
- break #L6;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int>?} == null)) {
- [yield] let dynamic #t283 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ asy::_StreamIterator<core::int>? :for-iterator = new asy::_StreamIterator::•<core::int>(:stream);
+ try
+ while (let dynamic #t273 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ core::int i = :for-iterator.{asy::_StreamIterator::current}{core::int};
+ #t272.{core::Set::add}{Invariant}(i){(core::int?) → core::bool};
}
- core::Set<core::int?> set40 = block {
- #t280.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
- } =>#t280;
- final core::Map<core::String, core::int?> #t284 = <core::String, core::int?>{};
- {
- asy::Stream<core::int> :stream = asy::Stream::fromIterable<core::int>(core::_GrowableList::_literal2<core::int>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:245:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ #t272.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
+ } =>#t272;
+ core::Map<core::String, core::int?> map40 = block {
+ final core::Map<core::String, core::int?> #t274 = <core::String, core::int?>{};
+ {
+ asy::Stream<core::int> :stream = asy::Stream::fromIterable<core::int>(core::_GrowableList::_literal2<core::int>(invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:245:57: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var map40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) \"bar\": i, \"baz\": null};
^" in "not" as{TypeError,ForNonNullableByDefault} core::int, invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:245:64: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
var map40 = {await for (int i in Stream.fromIterable([\"not\", \"int\"])) \"bar\": i, \"baz\": null};
^" in "int" as{TypeError,ForNonNullableByDefault} core::int));
- asy::_StreamIterator<core::int>? :for-iterator = new asy::_StreamIterator::•<core::int>(:stream);
- try
- #L7:
- while (true) {
- dynamic #t285 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t286 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- core::int i = :for-iterator.{asy::_StreamIterator::current}{core::int};
- #t284.{core::Map::[]=}{Invariant}("bar", i){(core::String, core::int?) → void};
- }
- else
- break #L7;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int>?} == null)) {
- [yield] let dynamic #t287 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ asy::_StreamIterator<core::int>? :for-iterator = new asy::_StreamIterator::•<core::int>(:stream);
+ try
+ while (let dynamic #t275 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ core::int i = :for-iterator.{asy::_StreamIterator::current}{core::int};
+ #t274.{core::Map::[]=}{Invariant}("bar", i){(core::String, core::int?) → void};
}
- core::Map<core::String, core::int?> map40 = block {
- #t284.{core::Map::[]=}{Invariant}("baz", null){(core::String, core::int?) → void};
- } =>#t284;
- core::List<core::int> list50 = block {
- final core::List<core::int> #t288 = core::_GrowableList::•<core::int>(0);
- for (; ; )
- #t288.{core::List::add}{Invariant}(42){(core::int) → void};
- } =>#t288;
- core::Set<core::int?> set50 = block {
- final core::Set<core::int?> #t289 = new col::_CompactLinkedHashSet::•<core::int?>();
- for (; ; )
- #t289.{core::Set::add}{Invariant}(42){(core::int?) → core::bool};
- #t289.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
- } =>#t289;
- core::Map<core::String, core::int?> map50 = block {
- final core::Map<core::String, core::int?> #t290 = <core::String, core::int?>{};
- for (; ; )
- #t290.{core::Map::[]=}{Invariant}("bar", 42){(core::String, core::int?) → void};
- #t290.{core::Map::[]=}{Invariant}("baz", null){(core::String, core::int?) → void};
- } =>#t290;
- core::List<core::int> list60 = block {
- final core::List<core::int> #t291 = core::_GrowableList::•<core::int>(0);
- for (; invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:249:24: Error: A value of type 'String' can't be assigned to a variable of type 'bool'.
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ #t274.{core::Map::[]=}{Invariant}("baz", null){(core::String, core::int?) → void};
+ } =>#t274;
+ core::List<core::int> list50 = block {
+ final core::List<core::int> #t276 = core::_GrowableList::•<core::int>(0);
+ for (; ; )
+ #t276.{core::List::add}{Invariant}(42){(core::int) → void};
+ } =>#t276;
+ core::Set<core::int?> set50 = block {
+ final core::Set<core::int?> #t277 = new col::_CompactLinkedHashSet::•<core::int?>();
+ for (; ; )
+ #t277.{core::Set::add}{Invariant}(42){(core::int?) → core::bool};
+ #t277.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
+ } =>#t277;
+ core::Map<core::String, core::int?> map50 = block {
+ final core::Map<core::String, core::int?> #t278 = <core::String, core::int?>{};
+ for (; ; )
+ #t278.{core::Map::[]=}{Invariant}("bar", 42){(core::String, core::int?) → void};
+ #t278.{core::Map::[]=}{Invariant}("baz", null){(core::String, core::int?) → void};
+ } =>#t278;
+ core::List<core::int> list60 = block {
+ final core::List<core::int> #t279 = core::_GrowableList::•<core::int>(0);
+ for (; invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:249:24: Error: A value of type 'String' can't be assigned to a variable of type 'bool'.
var list60 = [for (; \"not bool\";) 42];
^" in "not bool" as{TypeError,ForNonNullableByDefault} core::bool; )
- #t291.{core::List::add}{Invariant}(42){(core::int) → void};
- } =>#t291;
- core::Set<core::int?> set60 = block {
- final core::Set<core::int?> #t292 = new col::_CompactLinkedHashSet::•<core::int?>();
- for (; invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:250:23: Error: A value of type 'String' can't be assigned to a variable of type 'bool'.
+ #t279.{core::List::add}{Invariant}(42){(core::int) → void};
+ } =>#t279;
+ core::Set<core::int?> set60 = block {
+ final core::Set<core::int?> #t280 = new col::_CompactLinkedHashSet::•<core::int?>();
+ for (; invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:250:23: Error: A value of type 'String' can't be assigned to a variable of type 'bool'.
var set60 = {for (; \"not bool\";) 42, null};
^" in "not bool" as{TypeError,ForNonNullableByDefault} core::bool; )
- #t292.{core::Set::add}{Invariant}(42){(core::int?) → core::bool};
- #t292.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
- } =>#t292;
- core::Map<core::String, core::int?> map60 = block {
- final core::Map<core::String, core::int?> #t293 = <core::String, core::int?>{};
- for (; invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:251:23: Error: A value of type 'String' can't be assigned to a variable of type 'bool'.
+ #t280.{core::Set::add}{Invariant}(42){(core::int?) → core::bool};
+ #t280.{core::Set::add}{Invariant}(null){(core::int?) → core::bool};
+ } =>#t280;
+ core::Map<core::String, core::int?> map60 = block {
+ final core::Map<core::String, core::int?> #t281 = <core::String, core::int?>{};
+ for (; invalid-expression "pkg/front_end/testcases/general/control_flow_collection_inference2.dart:251:23: Error: A value of type 'String' can't be assigned to a variable of type 'bool'.
var map60 = {for (; \"not bool\";) \"bar\": 42, \"baz\": null};
^" in "not bool" as{TypeError,ForNonNullableByDefault} core::bool; )
- #t293.{core::Map::[]=}{Invariant}("bar", 42){(core::String, core::int?) → void};
- #t293.{core::Map::[]=}{Invariant}("baz", null){(core::String, core::int?) → void};
- } =>#t293;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ #t281.{core::Map::[]=}{Invariant}("bar", 42){(core::String, core::int?) → void};
+ #t281.{core::Map::[]=}{Invariant}("baz", null){(core::String, core::int?) → void};
+ } =>#t281;
}
static method testForElementErrorsNotAsync(asy::Stream<core::int> stream) → dynamic {
block {
- final core::List<core::int> #t294 = core::_GrowableList::•<core::int>(0);
+ final core::List<core::int> #t282 = core::_GrowableList::•<core::int>(0);
await for (core::int i in stream)
- #t294.{core::List::add}{Invariant}(i){(core::int) → void};
- } =>#t294;
+ #t282.{core::List::add}{Invariant}(i){(core::int) → void};
+ } =>#t282;
block {
- final core::Set<core::int> #t295 = new col::_CompactLinkedHashSet::•<core::int>();
+ final core::Set<core::int> #t283 = new col::_CompactLinkedHashSet::•<core::int>();
await for (core::int i in stream)
- #t295.{core::Set::add}{Invariant}(i){(core::int) → core::bool};
- } =>#t295;
+ #t283.{core::Set::add}{Invariant}(i){(core::int) → core::bool};
+ } =>#t283;
block {
- final core::Map<core::String, core::int> #t296 = <core::String, core::int>{};
+ final core::Map<core::String, core::int> #t284 = <core::String, core::int>{};
await for (core::int i in stream)
- #t296.{core::Map::[]=}{Invariant}("bar", i){(core::String, core::int) → void};
- } =>#t296;
+ #t284.{core::Map::[]=}{Invariant}("bar", i){(core::String, core::int) → void};
+ } =>#t284;
}
static method testPromotion(self::A a) → dynamic {
core::List<core::int> list10 = block {
- final core::List<core::int> #t297 = core::_GrowableList::•<core::int>(0);
+ final core::List<core::int> #t285 = core::_GrowableList::•<core::int>(0);
if(a is{ForNonNullableByDefault} self::B)
- #t297.{core::List::add}{Invariant}(a{self::B}.{self::B::foo}{core::int}){(core::int) → void};
- } =>#t297;
+ #t285.{core::List::add}{Invariant}(a{self::B}.{self::B::foo}{core::int}){(core::int) → void};
+ } =>#t285;
core::Set<core::int> set10 = block {
- final core::Set<core::int> #t298 = new col::_CompactLinkedHashSet::•<core::int>();
+ final core::Set<core::int> #t286 = new col::_CompactLinkedHashSet::•<core::int>();
if(a is{ForNonNullableByDefault} self::B)
- #t298.{core::Set::add}{Invariant}(a{self::B}.{self::B::foo}{core::int}){(core::int) → core::bool};
- } =>#t298;
+ #t286.{core::Set::add}{Invariant}(a{self::B}.{self::B::foo}{core::int}){(core::int) → core::bool};
+ } =>#t286;
core::Map<core::int, core::int> map10 = block {
- final core::Map<core::int, core::int> #t299 = <core::int, core::int>{};
+ final core::Map<core::int, core::int> #t287 = <core::int, core::int>{};
if(a is{ForNonNullableByDefault} self::B)
- #t299.{core::Map::[]=}{Invariant}(a{self::B}.{self::B::foo}{core::int}, a{self::B}.{self::B::foo}{core::int}){(core::int, core::int) → void};
- } =>#t299;
+ #t287.{core::Map::[]=}{Invariant}(a{self::B}.{self::B::foo}{core::int}, a{self::B}.{self::B::foo}{core::int}){(core::int, core::int) → void};
+ } =>#t287;
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/error_recovery/empty_await_for.dart.weak.transformed.expect b/pkg/front_end/testcases/general/error_recovery/empty_await_for.dart.weak.transformed.expect
index ee95a19..a8ee34c 100644
--- a/pkg/front_end/testcases/general/error_recovery/empty_await_for.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/error_recovery/empty_await_for.dart.weak.transformed.expect
@@ -14,61 +14,24 @@
import self as self;
import "dart:async" as asy;
import "dart:core" as core;
-import "dart:_internal" as _in;
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- dynamic :exception0;
- dynamic :stack_trace0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ {
+ Never :stream = invalid-expression "pkg/front_end/testcases/general/error_recovery/empty_await_for.dart:2:14: Error: This couldn't be parsed.
+ await for () {}
+ ^";
+ asy::_StreamIterator<dynamic>? :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
+ try
+ while (let dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ final dynamic #t2 = :for-iterator.{asy::_StreamIterator::current}{dynamic};
{
- Never :stream = invalid-expression "pkg/front_end/testcases/general/error_recovery/empty_await_for.dart:2:14: Error: This couldn't be parsed.
+ invalid-expression "pkg/front_end/testcases/general/error_recovery/empty_await_for.dart:2:14: Error: This couldn't be parsed.
await for () {}
^";
- asy::_StreamIterator<dynamic>? :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
- try
- #L2:
- while (true) {
- dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t2 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- final dynamic #t3 = :for-iterator.{asy::_StreamIterator::current}{dynamic};
- {
- invalid-expression "pkg/front_end/testcases/general/error_recovery/empty_await_for.dart:2:14: Error: This couldn't be parsed.
- await for () {}
- ^";
- }
- }
- else
- break #L2;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
- [yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
}
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
}
diff --git a/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.transformed.expect b/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.transformed.expect
index 55e1b209..0c88e17 100644
--- a/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/flutter_issue64155.dart.weak.transformed.expect
@@ -2,53 +2,26 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
abstract class TestMixin<R extends core::Object* = dynamic, T extends core::Object* = dynamic> extends core::Object /*isMixinDeclaration*/ {
- method test(covariant-by-class asy::Future<self::TestMixin::R*>* fetch) → asy::Future<self::TestMixin::T*>* /* futureValueType= self::TestMixin::T* */ /* originally async */ {
- final asy::_Future<self::TestMixin::T*>* :async_future = new asy::_Future::•<self::TestMixin::T*>();
- core::bool* :is_sync = false;
- FutureOr<self::TestMixin::T*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(fetch, :async_op_then, :async_op_error) in null;
- final self::TestMixin::R* response = _in::unsafeCast<self::TestMixin::R*>(:result_or_exception);
- self::TestMixin::T* result;
- if(response is self::Response<dynamic>*) {
- result = response{self::TestMixin::R* & self::Response<dynamic>* /* '*' & '*' = '*' */}.{self::Response::data}{dynamic} as{TypeError,ForDynamic} self::TestMixin::T*;
- }
- else
- if(response is self::PagingResponse<dynamic>*) {
- result = response{self::TestMixin::R* & self::PagingResponse<dynamic>* /* '*' & '*' = '*' */}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>*}.{self::PagingResponseData::data}{core::List<dynamic>*} as self::TestMixin::T*;
- }
- else
- if(response is self::TestMixin::T*) {
- result = response{self::TestMixin::R* & self::TestMixin::T* /* '*' & '*' = '*' */};
- }
- else {
- throw core::Exception::•("Invalid response type");
- }
- :return_value = result;
- break #L1;
+ method test(covariant-by-class asy::Future<self::TestMixin::R*>* fetch) → asy::Future<self::TestMixin::T*>* async /* futureValueType= self::TestMixin::T* */ {
+ final self::TestMixin::R* response = await fetch;
+ self::TestMixin::T* result;
+ if(response is self::Response<dynamic>*) {
+ result = response{self::TestMixin::R* & self::Response<dynamic>* /* '*' & '*' = '*' */}.{self::Response::data}{dynamic} as{TypeError,ForDynamic} self::TestMixin::T*;
+ }
+ else
+ if(response is self::PagingResponse<dynamic>*) {
+ result = response{self::TestMixin::R* & self::PagingResponse<dynamic>* /* '*' & '*' = '*' */}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>*}.{self::PagingResponseData::data}{core::List<dynamic>*} as self::TestMixin::T*;
+ }
+ else
+ if(response is self::TestMixin::T*) {
+ result = response{self::TestMixin::R* & self::TestMixin::T* /* '*' & '*' = '*' */};
}
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ else {
+ throw core::Exception::•("Invalid response type");
+ }
+ return result;
}
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -113,50 +86,24 @@
const synthetic constructor •() → self::_Class1&Object&TestMixin*
: super core::Object::•()
;
- method test(covariant-by-class asy::Future<self::Response<core::String*>*>* fetch) → asy::Future<core::String*>* /* futureValueType= core::String* */ /* originally async */ {
- final asy::_Future<core::String*>* :async_future = new asy::_Future::•<core::String*>();
- core::bool* :is_sync = false;
- core::String? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = asy::_awaitHelper(fetch, :async_op_then, :async_op_error) in null;
- final self::Response<core::String*>* response = _in::unsafeCast<self::Response<core::String*>*>(:result_or_exception);
- core::String* result;
- if(response is self::Response<dynamic>*) {
- result = response{self::Response<core::String*>*}.{self::Response::data}{dynamic} as{TypeError,ForDynamic} core::String*;
- }
- else
- if(response is self::PagingResponse<dynamic>*) {
- result = response{self::Response<core::String*>*}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>*}.{self::PagingResponseData::data}{core::List<dynamic>*} as core::String*;
- }
- else
- if(response is core::String*) {
- result = response{self::Response<core::String*>*};
- }
- else {
- throw core::Exception::•("Invalid response type");
- }
- :return_value = result;
- break #L2;
+ method test(covariant-by-class asy::Future<self::Response<core::String*>*>* fetch) → asy::Future<core::String*>* async /* futureValueType= core::String* */ {
+ final self::Response<core::String*>* response = await fetch;
+ core::String* result;
+ if(response is self::Response<dynamic>*) {
+ result = response{self::Response<core::String*>*}.{self::Response::data}{dynamic} as{TypeError,ForDynamic} core::String*;
+ }
+ else
+ if(response is self::PagingResponse<dynamic>*) {
+ result = response{self::Response<core::String*>*}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>*}.{self::PagingResponseData::data}{core::List<dynamic>*} as core::String*;
+ }
+ else
+ if(response is core::String*) {
+ result = response{self::Response<core::String*>*};
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ else {
+ throw core::Exception::•("Invalid response type");
+ }
+ return result;
}
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -182,50 +129,24 @@
const synthetic constructor •() → self::_Class2&Object&TestMixin*
: super core::Object::•()
;
- method test(covariant-by-class asy::Future<self::PagingResponse<core::String*>*>* fetch) → asy::Future<core::String*>* /* futureValueType= core::String* */ /* originally async */ {
- final asy::_Future<core::String*>* :async_future = new asy::_Future::•<core::String*>();
- core::bool* :is_sync = false;
- core::String? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- [yield] let dynamic #t3 = asy::_awaitHelper(fetch, :async_op_then, :async_op_error) in null;
- final self::PagingResponse<core::String*>* response = _in::unsafeCast<self::PagingResponse<core::String*>*>(:result_or_exception);
- core::String* result;
- if(response is self::Response<dynamic>*) {
- result = response{self::PagingResponse<core::String*>*}.{self::Response::data}{dynamic} as{TypeError,ForDynamic} core::String*;
- }
- else
- if(response is self::PagingResponse<dynamic>*) {
- result = response{self::PagingResponse<core::String*>*}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>*}.{self::PagingResponseData::data}{core::List<dynamic>*} as core::String*;
- }
- else
- if(response is core::String*) {
- result = response{self::PagingResponse<core::String*>*};
- }
- else {
- throw core::Exception::•("Invalid response type");
- }
- :return_value = result;
- break #L3;
+ method test(covariant-by-class asy::Future<self::PagingResponse<core::String*>*>* fetch) → asy::Future<core::String*>* async /* futureValueType= core::String* */ {
+ final self::PagingResponse<core::String*>* response = await fetch;
+ core::String* result;
+ if(response is self::Response<dynamic>*) {
+ result = response{self::PagingResponse<core::String*>*}.{self::Response::data}{dynamic} as{TypeError,ForDynamic} core::String*;
+ }
+ else
+ if(response is self::PagingResponse<dynamic>*) {
+ result = response{self::PagingResponse<core::String*>*}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>*}.{self::PagingResponseData::data}{core::List<dynamic>*} as core::String*;
+ }
+ else
+ if(response is core::String*) {
+ result = response{self::PagingResponse<core::String*>*};
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ else {
+ throw core::Exception::•("Invalid response type");
+ }
+ return result;
}
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
diff --git a/pkg/front_end/testcases/general/future_or_test.dart.weak.transformed.expect b/pkg/front_end/testcases/general/future_or_test.dart.weak.transformed.expect
index ffa2007..2aa86e0 100644
--- a/pkg/front_end/testcases/general/future_or_test.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/future_or_test.dart.weak.transformed.expect
@@ -27,33 +27,8 @@
synthetic constructor •() → self::B*
: super core::Object::•()
;
- method bar() → asy::Future<dynamic>* /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- FutureOr<dynamic>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = this.{self::B::a}{self::A*}.{self::A::foo}(){() →* dynamic};
- break #L1;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }
+ method bar() → asy::Future<dynamic>* async /* futureValueType= dynamic */
+ return this.{self::B::a}{self::A*}.{self::A::foo}(){() →* dynamic};
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
@@ -70,33 +45,8 @@
synthetic constructor •() → self::C*
: super core::Object::•()
;
- method baz() → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = this.{self::C::b}{self::B*}.{self::B::bar}(){() →* asy::Future<dynamic>*} as{TypeError} FutureOr<core::int*>*;
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }
+ method baz() → asy::Future<core::int*>* async /* futureValueType= core::int* */
+ return this.{self::C::b}{self::B*}.{self::B::bar}(){() →* asy::Future<dynamic>*} as{TypeError} FutureOr<core::int*>*;
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf
diff --git a/pkg/front_end/testcases/general/future_return.dart.weak.transformed.expect b/pkg/front_end/testcases/general/future_return.dart.weak.transformed.expect
index 3614ef4..bdb2a13 100644
--- a/pkg/front_end/testcases/general/future_return.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/future_return.dart.weak.transformed.expect
@@ -21,7 +21,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -32,377 +31,41 @@
}
static method returnDynamic() → dynamic
return new self::Class::•();
-static method returnClass() → self::Class /* futureValueType= core::Object? */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = new self::Class::•();
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnFutureClass() → asy::Future<self::Class> /* futureValueType= self::Class */ /* originally async */ {
- final asy::_Future<self::Class> :async_future = new asy::_Future::•<self::Class>();
- core::bool* :is_sync = false;
- self::Class? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = new self::Class::•();
- break #L2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnFutureOrClass() → FutureOr<self::Class> /* futureValueType= self::Class */ /* originally async */ {
- final asy::_Future<self::Class> :async_future = new asy::_Future::•<self::Class>();
- core::bool* :is_sync = false;
- self::Class? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- :return_value = new self::Class::•();
- break #L3;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnClassFromDynamic() → self::Class /* futureValueType= core::Object? */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- :return_value = self::returnDynamic();
- break #L4;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnFutureClassDynamic() → asy::Future<self::Class> /* futureValueType= self::Class */ /* originally async */ {
- final asy::_Future<self::Class> :async_future = new asy::_Future::•<self::Class>();
- core::bool* :is_sync = false;
- FutureOr<self::Class>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- :return_value = self::returnDynamic() as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<self::Class>;
- break #L5;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnFutureOrClassDynamic() → FutureOr<self::Class> /* futureValueType= self::Class */ /* originally async */ {
- final asy::_Future<self::Class> :async_future = new asy::_Future::•<self::Class>();
- core::bool* :is_sync = false;
- FutureOr<self::Class>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L6:
- {
- :return_value = self::returnDynamic() as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<self::Class>;
- break #L6;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnClassFromFutureClass() → self::Class /* futureValueType= core::Object? */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L7:
- {
- :return_value = self::returnFutureClass();
- break #L7;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnFutureClassFromFutureClass() → asy::Future<self::Class> /* futureValueType= self::Class */ /* originally async */ {
- final asy::_Future<self::Class> :async_future = new asy::_Future::•<self::Class>();
- core::bool* :is_sync = false;
- FutureOr<self::Class>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L8:
- {
- :return_value = self::returnFutureClass();
- break #L8;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnFutureOrClassFromFutureClass() → FutureOr<self::Class> /* futureValueType= self::Class */ /* originally async */ {
- final asy::_Future<self::Class> :async_future = new asy::_Future::•<self::Class>();
- core::bool* :is_sync = false;
- FutureOr<self::Class>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L9:
- {
- :return_value = self::returnFutureClass();
- break #L9;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnClassFromFutureOrClass() → self::Class /* futureValueType= core::Object? */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L10:
- {
- :return_value = self::returnFutureOrClass();
- break #L10;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnFutureClassFromFutureOrClass() → asy::Future<self::Class> /* futureValueType= self::Class */ /* originally async */ {
- final asy::_Future<self::Class> :async_future = new asy::_Future::•<self::Class>();
- core::bool* :is_sync = false;
- FutureOr<self::Class>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L11:
- {
- :return_value = self::returnFutureOrClass();
- break #L11;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnFutureOrClassFromFutureOrClass() → FutureOr<self::Class> /* futureValueType= self::Class */ /* originally async */ {
- final asy::_Future<self::Class> :async_future = new asy::_Future::•<self::Class>();
- core::bool* :is_sync = false;
- FutureOr<self::Class>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L12:
- {
- :return_value = self::returnFutureOrClass();
- break #L12;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L13:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(self::returnClass(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<self::Class>(:result_or_exception);
- [yield] let dynamic #t2 = asy::_awaitHelper(self::returnFutureClass(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<self::Class>(:result_or_exception);
- [yield] let dynamic #t3 = asy::_awaitHelper(self::returnFutureOrClass(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<self::Class>(:result_or_exception);
- [yield] let dynamic #t4 = asy::_awaitHelper(self::returnClassFromDynamic(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<self::Class>(:result_or_exception);
- [yield] let dynamic #t5 = asy::_awaitHelper(self::returnFutureClassDynamic(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<self::Class>(:result_or_exception);
- [yield] let dynamic #t6 = asy::_awaitHelper(self::returnFutureOrClassDynamic(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<self::Class>(:result_or_exception);
- [yield] let dynamic #t7 = asy::_awaitHelper(self::returnClassFromFutureClass(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<self::Class>(:result_or_exception);
- [yield] let dynamic #t8 = asy::_awaitHelper(self::returnFutureClassFromFutureClass(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<self::Class>(:result_or_exception);
- [yield] let dynamic #t9 = asy::_awaitHelper(self::returnFutureOrClassFromFutureClass(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<self::Class>(:result_or_exception);
- [yield] let dynamic #t10 = asy::_awaitHelper(self::returnClassFromFutureOrClass(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<self::Class>(:result_or_exception);
- [yield] let dynamic #t11 = asy::_awaitHelper(self::returnFutureClassFromFutureOrClass(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<self::Class>(:result_or_exception);
- [yield] let dynamic #t12 = asy::_awaitHelper(self::returnFutureOrClassFromFutureOrClass(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<self::Class>(:result_or_exception);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method returnClass() → self::Class async /* futureValueType= core::Object? */
+ return new self::Class::•();
+static method returnFutureClass() → asy::Future<self::Class> async /* futureValueType= self::Class */
+ return new self::Class::•();
+static method returnFutureOrClass() → FutureOr<self::Class> async /* futureValueType= self::Class */
+ return new self::Class::•();
+static method returnClassFromDynamic() → self::Class async /* futureValueType= core::Object? */
+ return self::returnDynamic();
+static method returnFutureClassDynamic() → asy::Future<self::Class> async /* futureValueType= self::Class */
+ return self::returnDynamic() as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<self::Class>;
+static method returnFutureOrClassDynamic() → FutureOr<self::Class> async /* futureValueType= self::Class */
+ return self::returnDynamic() as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<self::Class>;
+static method returnClassFromFutureClass() → self::Class async /* futureValueType= core::Object? */
+ return self::returnFutureClass();
+static method returnFutureClassFromFutureClass() → asy::Future<self::Class> async /* futureValueType= self::Class */
+ return self::returnFutureClass();
+static method returnFutureOrClassFromFutureClass() → FutureOr<self::Class> async /* futureValueType= self::Class */
+ return self::returnFutureClass();
+static method returnClassFromFutureOrClass() → self::Class async /* futureValueType= core::Object? */
+ return self::returnFutureOrClass();
+static method returnFutureClassFromFutureOrClass() → asy::Future<self::Class> async /* futureValueType= self::Class */
+ return self::returnFutureOrClass();
+static method returnFutureOrClassFromFutureOrClass() → FutureOr<self::Class> async /* futureValueType= self::Class */
+ return self::returnFutureOrClass();
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ await self::returnClass();
+ await self::returnFutureClass();
+ await self::returnFutureOrClass();
+ await self::returnClassFromDynamic();
+ await self::returnFutureClassDynamic();
+ await self::returnFutureOrClassDynamic();
+ await self::returnClassFromFutureClass();
+ await self::returnFutureClassFromFutureClass();
+ await self::returnFutureOrClassFromFutureClass();
+ await self::returnClassFromFutureOrClass();
+ await self::returnFutureClassFromFutureOrClass();
+ await self::returnFutureOrClassFromFutureOrClass();
}
diff --git a/pkg/front_end/testcases/general/inferred_void.dart.weak.transformed.expect b/pkg/front_end/testcases/general/inferred_void.dart.weak.transformed.expect
index cc36db2..e943d3f 100644
--- a/pkg/front_end/testcases/general/inferred_void.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/inferred_void.dart.weak.transformed.expect
@@ -2,100 +2,54 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
static field void v1 = self::method();
static field void v2 = self::method();
static field core::List<void> l1 = core::_GrowableList::_literal1<void>(self::method());
static field core::List<void> l2 = core::_GrowableList::_literal1<void>(self::method());
static method method() → void {}
-static method test(core::Iterable<void> iterable, asy::Stream<void> stream) → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- dynamic :exception0;
- dynamic :stack_trace0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- void v1 = self::method();
- void v2 = self::method();
- {
- core::Iterator<void> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<void>};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- void v3 = :sync-for-iterator.{core::Iterator::current}{void};
- {}
- }
- }
- {
- core::Iterator<void> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<void>};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- void v4 = :sync-for-iterator.{core::Iterator::current}{void};
- {}
- }
- }
- {
- asy::Stream<void> :stream = stream;
- asy::_StreamIterator<void>? :for-iterator = new asy::_StreamIterator::•<void>(:stream);
- try
- #L2:
- while (true) {
- dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t2 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- void v5 = :for-iterator.{asy::_StreamIterator::current}{void};
- {}
- }
- else
- break #L2;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<void>?} == null)) {
- [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
- }
- {
- asy::Stream<void> :stream = stream;
- asy::_StreamIterator<void>? :for-iterator = new asy::_StreamIterator::•<void>(:stream);
- try
- #L3:
- while (true) {
- dynamic #t4 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t5 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- void v6 = :for-iterator.{asy::_StreamIterator::current}{void};
- {}
- }
- else
- break #L3;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<void>?} == null)) {
- [yield] let dynamic #t6 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
- }
- core::List<void> l1 = core::_GrowableList::_literal1<void>(self::method());
- core::List<void> l2 = core::_GrowableList::_literal1<void>(self::method());
+static method test(core::Iterable<void> iterable, asy::Stream<void> stream) → dynamic async /* futureValueType= dynamic */ {
+ void v1 = self::method();
+ void v2 = self::method();
+ {
+ core::Iterator<void> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<void>};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ void v3 = :sync-for-iterator.{core::Iterator::current}{void};
+ {}
+ }
+ }
+ {
+ core::Iterator<void> :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<void>};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ void v4 = :sync-for-iterator.{core::Iterator::current}{void};
+ {}
+ }
+ }
+ {
+ asy::Stream<void> :stream = stream;
+ asy::_StreamIterator<void>? :for-iterator = new asy::_StreamIterator::•<void>(:stream);
+ try
+ while (let dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ void v5 = :for-iterator.{asy::_StreamIterator::current}{void};
+ {}
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<void>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ {
+ asy::Stream<void> :stream = stream;
+ asy::_StreamIterator<void>? :for-iterator = new asy::_StreamIterator::•<void>(:stream);
+ try
+ while (let dynamic #t2 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ void v6 = :for-iterator.{asy::_StreamIterator::current}{void};
+ {}
+ }
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<void>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ core::List<void> l1 = core::_GrowableList::_literal1<void>(self::method());
+ core::List<void> l2 = core::_GrowableList::_literal1<void>(self::method());
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue38253b.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue38253b.dart.weak.transformed.expect
index 0726288..be3108a 100644
--- a/pkg/front_end/testcases/general/issue38253b.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue38253b.dart.weak.transformed.expect
@@ -19,8 +19,6 @@
// ^
//
import self as self;
-import "dart:async" as asy;
-import "dart:core" as core;
static field () → Null a = () → Null {
function f1() → invalid-type {
@@ -28,34 +26,10 @@
return;
^" in null;
}
- function f2() → invalid-type /* futureValueType= invalid-type */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = invalid-expression "pkg/front_end/testcases/general/issue38253b.dart:11:5: Error: A value must be explicitly returned from a non-void async function.
+ function f2() → invalid-type async /* futureValueType= invalid-type */ {
+ return invalid-expression "pkg/front_end/testcases/general/issue38253b.dart:11:5: Error: A value must be explicitly returned from a non-void async function.
return;
^" in null;
- break #L1;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
}
};
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue38253c.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue38253c.dart.weak.transformed.expect
index 8beb24a..7681572 100644
--- a/pkg/front_end/testcases/general/issue38253c.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue38253c.dart.weak.transformed.expect
@@ -19,98 +19,23 @@
// ^
//
import self as self;
-import "dart:async" as asy;
import "dart:core" as core;
+import "dart:async" as asy;
static field () → Null a = () → Null {
function f1() → invalid-type {}
- function f2() → invalid-type /* futureValueType= invalid-type */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
+ function f2() → invalid-type async /* futureValueType= invalid-type */ {}
function f3() → core::int {
return invalid-expression "pkg/front_end/testcases/general/issue38253c.dart:8:3: Error: A non-null value must be returned since the return type 'int' doesn't allow null.
int f3() {}
^" in null;
}
- function f4() → asy::Future<core::int> /* futureValueType= core::int */ /* originally async */ {
- final asy::_Future<core::int> :async_future = new asy::_Future::•<core::int>();
- core::bool* :is_sync = false;
- FutureOr<core::int>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = invalid-expression "pkg/front_end/testcases/general/issue38253c.dart:9:3: Error: A non-null value must be returned since the return type 'int' doesn't allow null.
+ function f4() → asy::Future<core::int> async /* futureValueType= core::int */ {
+ return invalid-expression "pkg/front_end/testcases/general/issue38253c.dart:9:3: Error: A non-null value must be returned since the return type 'int' doesn't allow null.
Future<int> f4() async {}
^" in null;
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
}
};
-static field (dynamic) → asy::Future<dynamic> b = (dynamic f) → asy::Future<dynamic> /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(f, :async_op_then, :async_op_error) in null;
- :return_value = :result_or_exception;
- break #L3;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-};
+static field (dynamic) → asy::Future<dynamic> b = (dynamic f) → asy::Future<dynamic> async /* futureValueType= dynamic */ => await f;
static field (dynamic) → dynamic c = (dynamic f) → dynamic => f;
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue40662.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue40662.dart.weak.transformed.expect
index 4854611..904b9c0 100644
--- a/pkg/front_end/testcases/general/issue40662.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue40662.dart.weak.transformed.expect
@@ -1,84 +1,15 @@
library;
import self as self;
import "dart:core" as core;
-import "dart:async" as asy;
-import "dart:_internal" as _in;
static method bar(core::int* a, core::List<core::int*>* b) → dynamic {
self::expect(1.{core::int::unary-}(){() →* core::int*}, a);
self::expect(1.{core::int::unary-}(){() →* core::int*}, b.{core::List::[]}(0){(core::int*) →* core::int*}.{core::num::-}(2){(core::num*) →* core::int*});
}
-static method foo(core::int* x) → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- FutureOr<dynamic>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- core::int* :async_temporary_0;
- core::int* :async_temporary_1;
- core::List<core::int*>* :async_temporary_2;
- core::int* :async_temporary_3;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :async_temporary_3 = x.{core::num::-}(1){(core::num*) →* core::int*};
- if(!(x == null)) {
- :async_temporary_1 = x.{core::num::+}(1){(core::num*) →* core::int*};
- :async_temporary_0 = x.{core::num::+}(2){(core::num*) →* core::int*};
- [yield] let dynamic #t1 = asy::_awaitHelper(null, :async_op_then, :async_op_error) in null;
- :async_temporary_2 = core::_GrowableList::_literal3<core::int*>(_in::unsafeCast<core::int*>(:async_temporary_1), _in::unsafeCast<core::int*>(:async_temporary_0), _in::unsafeCast<Null>(:result_or_exception));
- }
- else {
- :async_temporary_2 = null;
- }
- :return_value = self::bar(_in::unsafeCast<core::int*>(:async_temporary_3), _in::unsafeCast<core::List<core::int*>*>(:async_temporary_2));
- break #L1;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method main() → void /* futureValueType= void */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- FutureOr<dynamic>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = asy::_awaitHelper(self::foo(0), :async_op_then, :async_op_error) in null;
- :return_value = :result_or_exception;
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
-}
+static method foo(core::int* x) → dynamic async /* futureValueType= dynamic */
+ return self::bar(x.{core::num::-}(1){(core::num*) →* core::int*}, !(x == null) ?{core::List<core::int*>*} core::_GrowableList::_literal3<core::int*>(x.{core::num::+}(1){(core::num*) →* core::int*}, x.{core::num::+}(2){(core::num*) →* core::int*}, await null) : null);
+static method main() → void async /* futureValueType= void */
+ return await self::foo(0);
static method expect(dynamic expected, dynamic actual) → dynamic {
if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual))
throw "Expected ${expected}, actual ${actual}";
@@ -88,4 +19,4 @@
Extra constant evaluation status:
Evaluated: InstanceInvocation @ org-dartlang-testcase:///issue40662.dart:10:10 -> IntConstant(-1)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///issue40662.dart:11:10 -> IntConstant(-1)
-Extra constant evaluation: evaluated: 92, effectively constant: 2
+Extra constant evaluation: evaluated: 31, effectively constant: 2
diff --git a/pkg/front_end/testcases/general/issue42615.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue42615.dart.weak.transformed.expect
index a5d9155..4590283 100644
--- a/pkg/front_end/testcases/general/issue42615.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue42615.dart.weak.transformed.expect
@@ -1,7 +1,6 @@
library;
import self as self;
import "dart:core" as core;
-import "dart:async" as asy;
import "dart:async";
@@ -23,33 +22,7 @@
static method method() → dynamic
return null;
static method main() → dynamic {
- new self::Class::•<dynamic>(a: () → FutureOr<core::List<dynamic>*>* /* futureValueType= core::List<dynamic>* */ /* originally async */ {
- final asy::_Future<core::List<dynamic>*>* :async_future = new asy::_Future::•<core::List<dynamic>*>();
- core::bool* :is_sync = false;
- FutureOr<core::List<dynamic>*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = self::method() as{TypeError} FutureOr<core::List<dynamic>*>*;
- break #L1;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- });
+ new self::Class::•<dynamic>(a: () → FutureOr<core::List<dynamic>*>* async /* futureValueType= core::List<dynamic>* */ => self::method() as{TypeError} FutureOr<core::List<dynamic>*>*);
}
constants {
diff --git a/pkg/front_end/testcases/general/issue46956.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue46956.dart.weak.transformed.expect
index 5209384..23b5061 100644
--- a/pkg/front_end/testcases/general/issue46956.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue46956.dart.weak.transformed.expect
@@ -2,7 +2,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -14,87 +13,14 @@
static method foo<X extends core::Object?>(self::A<self::foo::X%> x) → asy::Future<self::foo::X?>
return throw 42;
static method bar(core::String? y) → dynamic {}
-static method test(self::A<core::String> a) → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper((() → asy::Future<core::String?> /* futureValueType= core::String? */ /* originally async */ {
- final asy::_Future<core::String?> :async_future = new asy::_Future::•<core::String?>();
- core::bool* :is_sync = false;
- FutureOr<core::String?>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = self::foo<core::String>(a);
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- })(){() → asy::Future<core::String?>}, :async_op_then, :async_op_error) in null;
- final core::String? x = _in::unsafeCast<core::String?>(:result_or_exception);
- self::bar(x);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method test(self::A<core::String> a) → dynamic async /* futureValueType= dynamic */ {
+ final core::String? x = await(() → asy::Future<core::String?> async /* futureValueType= core::String? */ {
+ return self::foo<core::String>(a);
+ })(){() → asy::Future<core::String?>};
+ self::bar(x);
}
-static method test2(self::A<core::String> a) → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- :return_value = self::foo<core::String>(a);
- break #L3;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method test2(self::A<core::String> a) → dynamic async /* futureValueType= dynamic */ {
+ return self::foo<core::String>(a);
}
static method test3(self::A<core::String> a) → dynamic {
return self::foo<core::String>(a);
diff --git a/pkg/front_end/testcases/general/issue47057.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue47057.dart.weak.transformed.expect
index 745e0b9..da93591 100644
--- a/pkg/front_end/testcases/general/issue47057.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue47057.dart.weak.transformed.expect
@@ -5,36 +5,12 @@
import "dart:async";
-static method foo<X extends core::Object?>(self::foo::X% x) → asy::Future<core::int> /* futureValueType= core::int */ /* originally async */ {
- final asy::_Future<core::int> :async_future = new asy::_Future::•<core::int>();
- core::bool* :is_sync = false;
- FutureOr<core::int>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- if(x is{ForNonNullableByDefault} asy::Future<core::int>) {
- :return_value = x{self::foo::X% & asy::Future<core::int> /* '%' & '!' = '!' */};
- break #L1;
- }
- else {
- throw 42;
- }
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method foo<X extends core::Object?>(self::foo::X% x) → asy::Future<core::int> async /* futureValueType= core::int */ {
+ if(x is{ForNonNullableByDefault} asy::Future<core::int>) {
+ return x{self::foo::X% & asy::Future<core::int> /* '%' & '!' = '!' */};
+ }
+ else {
+ throw 42;
+ }
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/issue48347.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue48347.dart.weak.transformed.expect
index cb2e8b2..82a47f2 100644
--- a/pkg/front_end/testcases/general/issue48347.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/issue48347.dart.weak.transformed.expect
@@ -2,58 +2,21 @@
import self as self;
import "dart:async" as asy;
import "dart:core" as core;
-import "dart:_internal" as _in;
import "dart:async";
-static method test(asy::StreamController<void> _eventStreamController) → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- dynamic :exception0;
- dynamic :stack_trace0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- {
- asy::Stream<void> :stream = _eventStreamController.{asy::StreamController::stream}{asy::Stream<void>};
- asy::_StreamIterator<void>? :for-iterator = new asy::_StreamIterator::•<void>(:stream);
- try
- #L2:
- while (true) {
- dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t2 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- final void _ = :for-iterator.{asy::_StreamIterator::current}{void};
- {}
- }
- else
- break #L2;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<void>?} == null)) {
- [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
- }
+static method test(asy::StreamController<void> _eventStreamController) → dynamic async /* futureValueType= dynamic */ {
+ {
+ asy::Stream<void> :stream = _eventStreamController.{asy::StreamController::stream}{asy::Stream<void>};
+ asy::_StreamIterator<void>? :for-iterator = new asy::_StreamIterator::•<void>(:stream);
+ try
+ while (let dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ final void _ = :for-iterator.{asy::_StreamIterator::current}{void};
+ {}
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<void>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.transformed.expect b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.transformed.expect
index f3c06a2..21cedca 100644
--- a/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/no_such_method_forwarder.dart.weak.transformed.expect
@@ -1,41 +1,14 @@
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-import "dart:async" as asy;
-import "dart:_internal" as _in;
class X extends core::Object {
synthetic constructor •() → self::X
: super core::Object::•()
;
- method _foo() → void /* futureValueType= void */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(null, :async_op_then, :async_op_error) in null;
- _in::unsafeCast<Null>(:result_or_exception);
- core::print("hello");
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ method _foo() → void async /* futureValueType= void */ {
+ await null;
+ core::print("hello");
}
method foo() → void
return this.{self::X::_foo}(){() → void};
diff --git a/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.transformed.expect b/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.transformed.expect
index 1fe23ba..43749bc 100644
--- a/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/regression_flutter51828.dart.weak.transformed.expect
@@ -2,98 +2,18 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
class A extends core::Object {
synthetic constructor •() → self::A
: super core::Object::•()
;
- method foo(dynamic x) → asy::Future<void> /* futureValueType= void */ /* originally async */ {
- final asy::_Future<void> :async_future = new asy::_Future::•<void>();
- core::bool* :is_sync = false;
- void :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
+ method foo(dynamic x) → asy::Future<void> async /* futureValueType= void */ {}
}
class B extends core::Object {
synthetic constructor •() → self::B
: super core::Object::•()
;
- method bar(dynamic x) → asy::Future<void> /* futureValueType= void */ /* originally async */ {
- final asy::_Future<void> :async_future = new asy::_Future::•<void>();
- core::bool* :is_sync = false;
- void :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
+ method bar(dynamic x) → asy::Future<void> async /* futureValueType= void */ {}
}
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- self::B :async_temporary_0;
- dynamic :async_temporary_1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- :async_temporary_1 = new self::A::•();
- [yield] let dynamic #t1 = asy::_awaitHelper(null, :async_op_then, :async_op_error) in null;
- :async_temporary_1 = _in::unsafeCast<self::A>(:async_temporary_1).{self::A::foo}(_in::unsafeCast<Null>(:result_or_exception)){(dynamic) → asy::Future<void>};
- :async_temporary_0 = new self::B::•();
- [yield] let dynamic #t2 = asy::_awaitHelper(null, :async_op_then, :async_op_error) in null;
- :return_value = core::_GrowableList::_literal2<asy::Future<void>>(_in::unsafeCast<asy::Future<void>>(:async_temporary_1), _in::unsafeCast<self::B>(:async_temporary_0).{self::B::bar}(_in::unsafeCast<Null>(:result_or_exception)){(dynamic) → asy::Future<void>});
- break #L3;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
+static method main() → dynamic async /* futureValueType= dynamic */
+ return core::_GrowableList::_literal2<asy::Future<void>>(new self::A::•().{self::A::foo}(await null){(dynamic) → asy::Future<void>}, new self::B::•().{self::B::bar}(await null){(dynamic) → asy::Future<void>});
diff --git a/pkg/front_end/testcases/general/return_async_promoted.dart.weak.transformed.expect b/pkg/front_end/testcases/general/return_async_promoted.dart.weak.transformed.expect
index 9e92a56..1ed7164 100644
--- a/pkg/front_end/testcases/general/return_async_promoted.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/return_async_promoted.dart.weak.transformed.expect
@@ -7,60 +7,8 @@
import "org-dartlang-testcase:///return_async_promoted_lib.dart";
static method main() → void {
- <T extends core::Object? = dynamic>(dynamic) → asy::Future<core::int> f = <T extends core::Object? = dynamic>(dynamic o) → asy::Future<core::int> /* futureValueType= core::int */ /* originally async */ {
- final asy::_Future<core::int> :async_future = new asy::_Future::•<core::int>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = o is{ForNonNullableByDefault} core::int ?{core::int} o{core::int} : throw "";
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- };
- () → asy::Future<core::int> g = () → asy::Future<core::int> /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int> :async_future = new asy::_Future::•<core::int>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = ret::legacy();
- break #L2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- };
+ <T extends core::Object? = dynamic>(dynamic) → asy::Future<core::int> f = <T extends core::Object? = dynamic>(dynamic o) → asy::Future<core::int> async /* futureValueType= core::int */ => o is{ForNonNullableByDefault} core::int ?{core::int} o{core::int} : throw "";
+ () → asy::Future<core::int> g = () → asy::Future<core::int> async /* futureValueType= core::int* */ => ret::legacy();
}
static method nullable() → core::int?
return null;
@@ -76,86 +24,8 @@
import "org-dartlang-testcase:///return_async_promoted.dart";
static method legacy() → core::int* {
- <T extends core::Object* = dynamic>(dynamic) →* asy::Future<core::int*>* f = <T extends core::Object* = dynamic>(dynamic o) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- :return_value = o is core::int* ?{core::int*} o{core::int*} : throw "";
- break #L3;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- };
- () →* asy::Future<core::int*>* g = () → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- :return_value = self::nullable();
- break #L4;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- };
- () →* asy::Future<core::int*>* h = () → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- :return_value = self::nonNullable();
- break #L5;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- };
+ <T extends core::Object* = dynamic>(dynamic) →* asy::Future<core::int*>* f = <T extends core::Object* = dynamic>(dynamic o) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => o is core::int* ?{core::int*} o{core::int*} : throw "";
+ () →* asy::Future<core::int*>* g = () → asy::Future<core::int*>* async /* futureValueType= core::int* */ => self::nullable();
+ () →* asy::Future<core::int*>* h = () → asy::Future<core::int*>* async /* futureValueType= core::int* */ => self::nonNullable();
return null;
}
diff --git a/pkg/front_end/testcases/general/statements.dart.weak.transformed.expect b/pkg/front_end/testcases/general/statements.dart.weak.transformed.expect
index 2db299f..437744e 100644
--- a/pkg/front_end/testcases/general/statements.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/statements.dart.weak.transformed.expect
@@ -2,7 +2,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
static method foo() → dynamic {
try {
@@ -12,67 +11,22 @@
core::print("Hello from finally block!");
}
}
-static method bar(dynamic d) → dynamic /* originally async* */ {
- asy::_AsyncStarStreamController<dynamic>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- dynamic :saved_try_context_var2;
- dynamic :exception0;
- dynamic :stack_trace0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
+static method bar(dynamic d) → dynamic async* {
+ {
+ asy::Stream<dynamic> :stream = d as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<dynamic>;
+ asy::_StreamIterator<dynamic>? :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
try
- try {
- #L1:
+ while (let dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ dynamic x = :for-iterator.{asy::_StreamIterator::current}{dynamic};
{
- {
- asy::Stream<dynamic> :stream = d as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<dynamic>;
- asy::_StreamIterator<dynamic>? :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
- try
- #L2:
- while (true) {
- dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t2 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- dynamic x = :for-iterator.{asy::_StreamIterator::current}{dynamic};
- {
- if(:controller.{asy::_AsyncStarStreamController::add}(x){(dynamic) → core::bool})
- return null;
- else
- [yield] null;
- :controller.{asy::_AsyncStarStreamController::addStream}(x as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<dynamic>){(asy::Stream<dynamic>) → void};
- [yield] null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- return null;
- }
- }
- else
- break #L2;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
- [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
- }
+ yield x;
+ yield* x as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<dynamic>;
}
- return;
}
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
- return :controller_stream;
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
}
static method main() → dynamic {
do {
@@ -103,9 +57,9 @@
{
core::Iterator<dynamic> :sync-for-iterator = core::_GrowableList::_literal1<dynamic>("Hello from for-in without decl!").{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- final dynamic #t4 = :sync-for-iterator.{core::Iterator::current}{dynamic};
+ final dynamic #t2 = :sync-for-iterator.{core::Iterator::current}{dynamic};
{
- s = #t4;
+ s = #t2;
core::print(s);
}
}
@@ -113,9 +67,9 @@
{
core::Iterator<dynamic> :sync-for-iterator = core::_GrowableList::_literal1<dynamic>("Hello from for-in without decl and block!").{core::Iterable::iterator}{core::Iterator<dynamic>};
for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- final dynamic #t5 = :sync-for-iterator.{core::Iterator::current}{dynamic};
+ final dynamic #t3 = :sync-for-iterator.{core::Iterator::current}{dynamic};
{
- s = #t5;
+ s = #t3;
core::print(s);
}
}
@@ -147,87 +101,87 @@
on core::Object catch(final core::Object e) {
core::print(e);
}
- #L3:
+ #L1:
switch(1) {
- #L4:
+ #L2:
case #C1:
case #C2:
{
core::print("Hello from switch case!");
- break #L3;
+ break #L1;
}
- #L5:
+ #L3:
default:
{
- break #L3;
+ break #L1;
}
}
- #L6:
+ #L4:
switch(4) {
- #L7:
+ #L5:
case #C2:
{
core::print("Hello from case 2!");
- break #L6;
+ break #L4;
}
- #L8:
+ #L6:
case #C1:
{
core::print("Hello from case 1!");
- continue #L7;
+ continue #L5;
}
- #L9:
+ #L7:
case #C3:
{
core::print("Hello from case 0!");
- continue #L8;
+ continue #L6;
}
- #L10:
+ #L8:
case #C4:
{
core::print("Hello from case 4!");
- continue #L11;
- }
- #L11:
- default:
- {
continue #L9;
}
+ #L9:
+ default:
+ {
+ continue #L7;
+ }
}
- #L12:
+ #L10:
switch(4) {
- #L13:
+ #L11:
case #C1:
{
core::print("Hello from next case 1");
- break #L12;
+ break #L10;
}
- #L14:
+ #L12:
default:
{
- continue #L13;
+ continue #L11;
}
}
core::int i = 0;
- #L15:
+ #L13:
do
- #L16:
+ #L14:
{
core::print("Hello from do-while!");
if((i = i.{core::num::+}(1){(core::num) → core::int}).{core::num::<}(3){(core::num) → core::bool})
- break #L16;
- break #L15;
+ break #L14;
+ break #L13;
}
while (true)
i = 0;
- #L17:
+ #L15:
while (true)
- #L18:
+ #L16:
{
core::print("Hello from while!");
if((i = i.{core::num::+}(1){(core::num) → core::int}).{core::num::<}(3){(core::num) → core::bool})
- break #L18;
- break #L17;
+ break #L16;
+ break #L15;
}
}
diff --git a/pkg/front_end/testcases/general/stream_future.dart.weak.transformed.expect b/pkg/front_end/testcases/general/stream_future.dart.weak.transformed.expect
index 5f23e4e..23a9b36 100644
--- a/pkg/front_end/testcases/general/stream_future.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/general/stream_future.dart.weak.transformed.expect
@@ -11,7 +11,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -24,187 +23,35 @@
return new self::Class::•();
static method returnClass() → self::Class
return new self::Class::•();
-static method returnFutureDynamic() → asy::Future<dynamic> /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = new self::Class::•();
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnFutureClass() → asy::Future<self::Class> /* futureValueType= self::Class */ /* originally async */ {
- final asy::_Future<self::Class> :async_future = new asy::_Future::•<self::Class>();
- core::bool* :is_sync = false;
- self::Class? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = new self::Class::•();
- break #L2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method error() → asy::Stream<FutureOr<self::Class>> /* originally async* */ {
- asy::_AsyncStarStreamController<FutureOr<self::Class>>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L3:
- {
- if(:controller.{asy::_AsyncStarStreamController::add}(invalid-expression "pkg/front_end/testcases/general/stream_future.dart:18:9: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'FutureOr<Class>'.
+static method returnFutureDynamic() → asy::Future<dynamic> async /* futureValueType= dynamic */
+ return new self::Class::•();
+static method returnFutureClass() → asy::Future<self::Class> async /* futureValueType= self::Class */
+ return new self::Class::•();
+static method error() → asy::Stream<FutureOr<self::Class>> async* {
+ yield invalid-expression "pkg/front_end/testcases/general/stream_future.dart:18:9: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'FutureOr<Class>'.
- 'Future' is from 'dart:async'.
- 'Class' is from 'pkg/front_end/testcases/general/stream_future.dart'.
yield returnFutureDynamic();
- ^" in self::returnFutureDynamic() as{TypeError,ForNonNullableByDefault} FutureOr<self::Class>){(FutureOr<self::Class>) → core::bool})
- return null;
- else
- [yield] null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<FutureOr<self::Class>>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<FutureOr<self::Class>>};
- return :controller_stream;
+ ^" in self::returnFutureDynamic() as{TypeError,ForNonNullableByDefault} FutureOr<self::Class>;
}
-static method stream() → asy::Stream<FutureOr<self::Class>> /* originally async* */ {
- asy::_AsyncStarStreamController<FutureOr<self::Class>>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
+static method stream() → asy::Stream<FutureOr<self::Class>> async* {
+ yield self::returnDynamic() as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<self::Class>;
+ yield self::returnClass();
+ yield self::returnFutureClass();
+}
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ {
+ asy::Stream<FutureOr<self::Class>> :stream = self::stream();
+ asy::_StreamIterator<FutureOr<self::Class>>? :for-iterator = new asy::_StreamIterator::•<FutureOr<self::Class>>(:stream);
try
- try {
- #L4:
+ while (let dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ FutureOr<self::Class>cls = :for-iterator.{asy::_StreamIterator::current}{FutureOr<self::Class>};
{
- if(:controller.{asy::_AsyncStarStreamController::add}(self::returnDynamic() as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<self::Class>){(FutureOr<self::Class>) → core::bool})
- return null;
- else
- [yield] null;
- if(:controller.{asy::_AsyncStarStreamController::add}(self::returnClass()){(FutureOr<self::Class>) → core::bool})
- return null;
- else
- [yield] null;
- if(:controller.{asy::_AsyncStarStreamController::add}(self::returnFutureClass()){(FutureOr<self::Class>) → core::bool})
- return null;
- else
- [yield] null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<FutureOr<self::Class>>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<FutureOr<self::Class>>};
- return :controller_stream;
-}
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- dynamic :exception0;
- dynamic :stack_trace0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- {
- asy::Stream<FutureOr<self::Class>> :stream = self::stream();
- asy::_StreamIterator<FutureOr<self::Class>>? :for-iterator = new asy::_StreamIterator::•<FutureOr<self::Class>>(:stream);
- try
- #L6:
- while (true) {
- dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t2 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- FutureOr<self::Class>cls = :for-iterator.{asy::_StreamIterator::current}{FutureOr<self::Class>};
- {
- core::print(cls);
- }
- }
- else
- break #L6;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<FutureOr<self::Class>>?} == null)) {
- [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ core::print(cls);
}
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<FutureOr<self::Class>>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
}
diff --git a/pkg/front_end/testcases/incremental.status b/pkg/front_end/testcases/incremental.status
index 1afe42e..9638f1b 100644
--- a/pkg/front_end/testcases/incremental.status
+++ b/pkg/front_end/testcases/incremental.status
@@ -10,7 +10,6 @@
changing_modules_16: Crash
late_lowering: EquivalenceError
constant_fileoffset_and_typedef: EquivalenceError
-no_change_but_changed_type: EquivalenceError
no_such_method_forwarder: EquivalenceError
no_change_but_changed_type_02: EquivalenceError
changing_nullability_on_recompile: EquivalenceError
diff --git a/pkg/front_end/testcases/incremental/no_change_but_changed_type.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_change_but_changed_type.yaml.world.1.expect
index 99d00d7..f2a38bd 100644
--- a/pkg/front_end/testcases/incremental/no_change_but_changed_type.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_change_but_changed_type.yaml.world.1.expect
@@ -2,35 +2,9 @@
library from "org-dartlang-test:///lib.dart" as lib {
abstract class TestMixin<T extends dart.core::Object? = dynamic> extends dart.core::Object /*isMixinDeclaration*/ {
- method test(covariant-by-class dart.async::Future<lib::TestMixin::T%> fetch) → dart.async::Future<lib::TestMixin::T%> /* futureValueType= lib::TestMixin::T% */ /* originally async */ {
- final dart.async::_Future<lib::TestMixin::T%> :async_future = new dart.async::_Future::•<lib::TestMixin::T%>();
- dart.core::bool* :is_sync = false;
- FutureOr<lib::TestMixin::T%>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (dart.core::Object, dart.core::StackTrace) → dynamic :async_op_error;
- dart.core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = dart.async::_awaitHelper(fetch, :async_op_then, :async_op_error) in null;
- final lib::TestMixin::T% response = dart._internal::unsafeCast<lib::TestMixin::T%>(:result_or_exception);
- :return_value = response;
- break #L1;
- }
- dart.async::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ method test(covariant-by-class dart.async::Future<lib::TestMixin::T%> fetch) → dart.async::Future<lib::TestMixin::T%> async /* futureValueType= lib::TestMixin::T% */ {
+ final lib::TestMixin::T% response = await fetch;
+ return response;
}
}
}
@@ -42,35 +16,9 @@
const synthetic constructor •() → main::_Class2&Object&TestMixin
: super dart.core::Object::•()
;
- method /* from org-dartlang-test:///lib.dart */ test(covariant-by-class dart.async::Future<dart.core::String> fetch) → dart.async::Future<dart.core::String> /* futureValueType= dart.core::String */ /* originally async */ {
- final dart.async::_Future<dart.core::String> :async_future = new dart.async::_Future::•<dart.core::String>();
- dart.core::bool* :is_sync = false;
- dart.core::String? :return_value;
- (dynamic) → dynamic :async_op_then;
- (dart.core::Object, dart.core::StackTrace) → dynamic :async_op_error;
- dart.core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = dart.async::_awaitHelper(fetch, :async_op_then, :async_op_error) in null;
- final dart.core::String response = dart._internal::unsafeCast<dart.core::String>(:result_or_exception);
- :return_value = response;
- break #L2;
- }
- dart.async::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ method /* from org-dartlang-test:///lib.dart */ test(covariant-by-class dart.async::Future<dart.core::String> fetch) → dart.async::Future<dart.core::String> async /* futureValueType= dart.core::String */ {
+ final dart.core::String response = await fetch;
+ return response;
}
}
class Class2 extends main::_Class2&Object&TestMixin {
diff --git a/pkg/front_end/testcases/incremental/no_change_but_changed_type.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_change_but_changed_type.yaml.world.2.expect
index ba9e36d..f2a38bd 100644
--- a/pkg/front_end/testcases/incremental/no_change_but_changed_type.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_change_but_changed_type.yaml.world.2.expect
@@ -2,35 +2,9 @@
library from "org-dartlang-test:///lib.dart" as lib {
abstract class TestMixin<T extends dart.core::Object? = dynamic> extends dart.core::Object /*isMixinDeclaration*/ {
- method test(covariant-by-class dart.async::Future<lib::TestMixin::T%> fetch) → dart.async::Future<lib::TestMixin::T%> /* futureValueType= lib::TestMixin::T% */ /* originally async */ {
- final dart.async::_Future<lib::TestMixin::T%> :async_future = new dart.async::_Future::•<lib::TestMixin::T%>();
- dart.core::bool* :is_sync = false;
- FutureOr<lib::TestMixin::T%>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (dart.core::Object, dart.core::StackTrace) → dynamic :async_op_error;
- dart.core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = dart.async::_awaitHelper(fetch, :async_op_then, :async_op_error) in null;
- final lib::TestMixin::T% response = dart._internal::unsafeCast<lib::TestMixin::T%>(:result_or_exception);
- :return_value = response;
- break #L1;
- }
- dart.async::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ method test(covariant-by-class dart.async::Future<lib::TestMixin::T%> fetch) → dart.async::Future<lib::TestMixin::T%> async /* futureValueType= lib::TestMixin::T% */ {
+ final lib::TestMixin::T% response = await fetch;
+ return response;
}
}
}
@@ -42,35 +16,9 @@
const synthetic constructor •() → main::_Class2&Object&TestMixin
: super dart.core::Object::•()
;
- method /* from org-dartlang-test:///lib.dart */ test(covariant-by-class dart.async::Future<dart.core::String> fetch) → dart.async::Future<dart.core::String> /* futureValueType= dart.core::String */ /* originally async */ {
- final dart.async::_Future<dart.core::String> :async_future = new dart.async::_Future::•<dart.core::String>();
- dart.core::bool* :is_sync = false;
- FutureOr<dart.core::String>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (dart.core::Object, dart.core::StackTrace) → dynamic :async_op_error;
- dart.core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = dart.async::_awaitHelper(fetch, :async_op_then, :async_op_error) in null;
- final dart.core::String response = dart._internal::unsafeCast<dart.core::String>(:result_or_exception);
- :return_value = response;
- break #L2;
- }
- dart.async::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ method /* from org-dartlang-test:///lib.dart */ test(covariant-by-class dart.async::Future<dart.core::String> fetch) → dart.async::Future<dart.core::String> async /* futureValueType= dart.core::String */ {
+ final dart.core::String response = await fetch;
+ return response;
}
}
class Class2 extends main::_Class2&Object&TestMixin {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.1.expect
index e04acb1..5858d2a 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.1.expect
@@ -1,35 +1,9 @@
main = main::main;
library from "org-dartlang-test:///libA.dart" as libA {
- static method whatever() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final dart.async::_Future<dynamic>* :async_future = new dart.async::_Future::•<dynamic>();
- dart.core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (dart.core::Object*, dart.core::StackTrace*) →* dynamic :async_op_error;
- dart.core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = dart.async::_awaitHelper(null, :async_op_then, :async_op_error) in null;
- dart._internal::unsafeCast<Null>(:result_or_exception);
- :return_value = "hello";
- break #L1;
- }
- dart.async::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ static method whatever() → dynamic async /* futureValueType= dynamic */ {
+ await null;
+ return "hello";
}
}
library from "org-dartlang-test:///main.dart" as main {
@@ -53,34 +27,9 @@
abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
}
- static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final dart.async::_Future<dynamic>* :async_future = new dart.async::_Future::•<dynamic>();
- dart.core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (dart.core::Object*, dart.core::StackTrace*) →* dynamic :async_op_error;
- dart.core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = dart.async::_awaitHelper(libA::whatever(), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- dart.core::print(#C2);
- }
- dart.async::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ static method main() → dynamic async /* futureValueType= dynamic */ {
+ await libA::whatever();
+ dart.core::print(#C2);
}
}
constants {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.2.expect
index 56a2eb1..39a1eee 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_3.yaml.world.2.expect
@@ -1,35 +1,9 @@
main = main::main;
library from "org-dartlang-test:///libA.dart" as libA {
- static method whatever() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final dart.async::_Future<dynamic>* :async_future = new dart.async::_Future::•<dynamic>();
- dart.core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (dart.core::Object*, dart.core::StackTrace*) →* dynamic :async_op_error;
- dart.core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = dart.async::_awaitHelper(null, :async_op_then, :async_op_error) in null;
- dart._internal::unsafeCast<Null>(:result_or_exception);
- :return_value = "hello";
- break #L1;
- }
- dart.async::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ static method whatever() → dynamic async /* futureValueType= dynamic */ {
+ await null;
+ return "hello";
}
}
library from "org-dartlang-test:///main.dart" as main {
@@ -53,35 +27,10 @@
abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
}
- static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final dart.async::_Future<dynamic>* :async_future = new dart.async::_Future::•<dynamic>();
- dart.core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (dart.core::Object*, dart.core::StackTrace*) →* dynamic :async_op_error;
- dart.core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = dart.async::_awaitHelper(libA::whatever(), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- dart.core::print(#C2);
- dart.core::print("Done");
- }
- dart.async::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ static method main() → dynamic async /* futureValueType= dynamic */ {
+ await libA::whatever();
+ dart.core::print(#C2);
+ dart.core::print("Done");
}
}
constants {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.1.expect b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.1.expect
index 31712ce..d8895e9 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.1.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.1.expect
@@ -19,64 +19,13 @@
abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
}
- static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final dart.async::_Future<dynamic>* :async_future = new dart.async::_Future::•<dynamic>();
- dart.core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (dart.core::Object*, dart.core::StackTrace*) →* dynamic :async_op_error;
- dart.core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = dart.async::_awaitHelper(main::whatever(), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- dart.core::print(#C2);
- }
- dart.async::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ static method main() → dynamic async /* futureValueType= dynamic */ {
+ await main::whatever();
+ dart.core::print(#C2);
}
- static method /* from org-dartlang-test:///myPart.dart */ whatever() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final dart.async::_Future<dynamic>* :async_future = new dart.async::_Future::•<dynamic>();
- dart.core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (dart.core::Object*, dart.core::StackTrace*) →* dynamic :async_op_error;
- dart.core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = dart.async::_awaitHelper(null, :async_op_then, :async_op_error) in null;
- dart._internal::unsafeCast<Null>(:result_or_exception);
- :return_value = "hello";
- break #L2;
- }
- dart.async::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ static method /* from org-dartlang-test:///myPart.dart */ whatever() → dynamic async /* futureValueType= dynamic */ {
+ await null;
+ return "hello";
}
}
constants {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.2.expect b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.2.expect
index 37f43e7..443a189c 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.2.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.2.expect
@@ -19,64 +19,13 @@
abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
}
- static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final dart.async::_Future<dynamic>* :async_future = new dart.async::_Future::•<dynamic>();
- dart.core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (dart.core::Object*, dart.core::StackTrace*) →* dynamic :async_op_error;
- dart.core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = dart.async::_awaitHelper(main::whatever(), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- dart.core::print(#C2);
- }
- dart.async::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ static method main() → dynamic async /* futureValueType= dynamic */ {
+ await main::whatever();
+ dart.core::print(#C2);
}
- static method /* from org-dartlang-test:///myPart.dart */ whatever() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final dart.async::_Future<dynamic>* :async_future = new dart.async::_Future::•<dynamic>();
- dart.core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (dart.core::Object*, dart.core::StackTrace*) →* dynamic :async_op_error;
- dart.core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = dart.async::_awaitHelper(null, :async_op_then, :async_op_error) in null;
- dart._internal::unsafeCast<Null>(:result_or_exception);
- :return_value = "hello!!!";
- break #L2;
- }
- dart.async::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ static method /* from org-dartlang-test:///myPart.dart */ whatever() → dynamic async /* futureValueType= dynamic */ {
+ await null;
+ return "hello!!!";
}
}
constants {
diff --git a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.3.expect b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.3.expect
index 9d36a28..e7549e8 100644
--- a/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.3.expect
+++ b/pkg/front_end/testcases/incremental/no_outline_change_5.yaml.world.3.expect
@@ -19,65 +19,14 @@
abstract member-signature method noSuchMethod(dart.core::Invocation* invocation) → dynamic; -> dart.core::Object::noSuchMethod
abstract member-signature get runtimeType() → dart.core::Type*; -> dart.core::Object::runtimeType
}
- static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final dart.async::_Future<dynamic>* :async_future = new dart.async::_Future::•<dynamic>();
- dart.core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (dart.core::Object*, dart.core::StackTrace*) →* dynamic :async_op_error;
- dart.core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = dart.async::_awaitHelper(main::whatever(), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- dart.core::print(#C2);
- dart.core::print("Done!");
- }
- dart.async::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ static method main() → dynamic async /* futureValueType= dynamic */ {
+ await main::whatever();
+ dart.core::print(#C2);
+ dart.core::print("Done!");
}
- static method /* from org-dartlang-test:///myPart.dart */ whatever() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final dart.async::_Future<dynamic>* :async_future = new dart.async::_Future::•<dynamic>();
- dart.core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (dart.core::Object*, dart.core::StackTrace*) →* dynamic :async_op_error;
- dart.core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = dart.async::_awaitHelper(null, :async_op_then, :async_op_error) in null;
- dart._internal::unsafeCast<Null>(:result_or_exception);
- :return_value = "hello!!!";
- break #L2;
- }
- dart.async::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace* stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ static method /* from org-dartlang-test:///myPart.dart */ whatever() → dynamic async /* futureValueType= dynamic */ {
+ await null;
+ return "hello!!!";
}
}
constants {
diff --git a/pkg/front_end/testcases/inference/async_await.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/async_await.dart.weak.transformed.expect
index e66b45d..73e7931 100644
--- a/pkg/front_end/testcases/inference/async_await.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/async_await.dart.weak.transformed.expect
@@ -2,7 +2,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -26,331 +25,47 @@
abstract member-signature method asStream() → asy::Stream<core::int*>*; -> asy::Future::asStream
abstract member-signature method timeout(core::Duration* timeLimit, {covariant-by-class () →* FutureOr<core::int*>* onTimeout = #C1}) → asy::Future<core::int*>*; -> asy::Future::timeout
}
-static method test() → void /* futureValueType= void */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- core::int* x0;
- asy::Future<core::int*>* x1;
- asy::Future<asy::Future<core::int*>*>* x2;
- asy::Future<FutureOr<core::int*>*>* x3;
- asy::Future<self::MyFuture*>* x4;
- FutureOr<core::int*>* x5;
- FutureOr<asy::Future<core::int*>*>* x6;
- FutureOr<FutureOr<core::int*>*>* x7;
- FutureOr<self::MyFuture*>* x8;
- self::MyFuture* x9;
- function test0() → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = x0;
- break #L2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }
- function test1() → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- :return_value = x1;
- break #L3;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }
- function test2() → asy::Future<asy::Future<core::int*>*>* /* futureValueType= asy::Future<core::int*>* */ /* originally async */ {
- final asy::_Future<asy::Future<core::int*>*>* :async_future = new asy::_Future::•<asy::Future<core::int*>*>();
- core::bool* :is_sync = false;
- FutureOr<asy::Future<core::int*>*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- :return_value = x2;
- break #L4;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }
- function test3() → asy::Future<FutureOr<core::int*>*>* /* futureValueType= FutureOr<core::int*>* */ /* originally async */ {
- final asy::_Future<FutureOr<core::int*>*>* :async_future = new asy::_Future::•<FutureOr<core::int*>*>();
- core::bool* :is_sync = false;
- FutureOr<FutureOr<core::int*>*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- :return_value = x3;
- break #L5;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }
- function test4() → asy::Future<self::MyFuture*>* /* futureValueType= self::MyFuture* */ /* originally async */ {
- final asy::_Future<self::MyFuture*>* :async_future = new asy::_Future::•<self::MyFuture*>();
- core::bool* :is_sync = false;
- FutureOr<self::MyFuture*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L6:
- {
- :return_value = x4;
- break #L6;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }
- function test5() → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L7:
- {
- :return_value = x5;
- break #L7;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }
- function test6() → asy::Future<asy::Future<core::int*>*>* /* futureValueType= asy::Future<core::int*>* */ /* originally async */ {
- final asy::_Future<asy::Future<core::int*>*>* :async_future = new asy::_Future::•<asy::Future<core::int*>*>();
- core::bool* :is_sync = false;
- FutureOr<asy::Future<core::int*>*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L8:
- {
- :return_value = x6;
- break #L8;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }
- function test7() → asy::Future<FutureOr<core::int*>*>* /* futureValueType= FutureOr<core::int*>* */ /* originally async */ {
- final asy::_Future<FutureOr<core::int*>*>* :async_future = new asy::_Future::•<FutureOr<core::int*>*>();
- core::bool* :is_sync = false;
- FutureOr<FutureOr<core::int*>*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L9:
- {
- :return_value = x7;
- break #L9;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }
- function test8() → asy::Future<self::MyFuture*>* /* futureValueType= self::MyFuture* */ /* originally async */ {
- final asy::_Future<self::MyFuture*>* :async_future = new asy::_Future::•<self::MyFuture*>();
- core::bool* :is_sync = false;
- FutureOr<self::MyFuture*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L10:
- {
- :return_value = x8;
- break #L10;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }
- function test9() → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L11:
- {
- :return_value = x9;
- break #L11;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }
- [yield] let dynamic #t1 = asy::_awaitHelper(x0, :async_op_then, :async_op_error) in null;
- core::int* y0 = _in::unsafeCast<core::int*>(:result_or_exception);
- [yield] let dynamic #t2 = asy::_awaitHelper(x1, :async_op_then, :async_op_error) in null;
- core::int* y1 = _in::unsafeCast<core::int*>(:result_or_exception);
- [yield] let dynamic #t3 = asy::_awaitHelper(x2, :async_op_then, :async_op_error) in null;
- asy::Future<core::int*>* y2 = _in::unsafeCast<asy::Future<core::int*>*>(:result_or_exception);
- [yield] let dynamic #t4 = asy::_awaitHelper(x3, :async_op_then, :async_op_error) in null;
- FutureOr<core::int*>* y3 = _in::unsafeCast<FutureOr<core::int*>*>(:result_or_exception);
- [yield] let dynamic #t5 = asy::_awaitHelper(x4, :async_op_then, :async_op_error) in null;
- self::MyFuture* y4 = _in::unsafeCast<self::MyFuture*>(:result_or_exception);
- [yield] let dynamic #t6 = asy::_awaitHelper(x5, :async_op_then, :async_op_error) in null;
- core::int* y5 = _in::unsafeCast<core::int*>(:result_or_exception);
- [yield] let dynamic #t7 = asy::_awaitHelper(x6, :async_op_then, :async_op_error) in null;
- asy::Future<core::int*>* y6 = _in::unsafeCast<asy::Future<core::int*>*>(:result_or_exception);
- [yield] let dynamic #t8 = asy::_awaitHelper(x7, :async_op_then, :async_op_error) in null;
- FutureOr<core::int*>* y7 = _in::unsafeCast<FutureOr<core::int*>*>(:result_or_exception);
- [yield] let dynamic #t9 = asy::_awaitHelper(x8, :async_op_then, :async_op_error) in null;
- self::MyFuture* y8 = _in::unsafeCast<self::MyFuture*>(:result_or_exception);
- [yield] let dynamic #t10 = asy::_awaitHelper(x9, :async_op_then, :async_op_error) in null;
- core::int* y9 = _in::unsafeCast<core::int*>(:result_or_exception);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+static method test() → void async /* futureValueType= void */ {
+ core::int* x0;
+ asy::Future<core::int*>* x1;
+ asy::Future<asy::Future<core::int*>*>* x2;
+ asy::Future<FutureOr<core::int*>*>* x3;
+ asy::Future<self::MyFuture*>* x4;
+ FutureOr<core::int*>* x5;
+ FutureOr<asy::Future<core::int*>*>* x6;
+ FutureOr<FutureOr<core::int*>*>* x7;
+ FutureOr<self::MyFuture*>* x8;
+ self::MyFuture* x9;
+ function test0() → asy::Future<core::int*>* async /* futureValueType= core::int* */
+ return x0;
+ function test1() → asy::Future<core::int*>* async /* futureValueType= core::int* */
+ return x1;
+ function test2() → asy::Future<asy::Future<core::int*>*>* async /* futureValueType= asy::Future<core::int*>* */
+ return x2;
+ function test3() → asy::Future<FutureOr<core::int*>*>* async /* futureValueType= FutureOr<core::int*>* */
+ return x3;
+ function test4() → asy::Future<self::MyFuture*>* async /* futureValueType= self::MyFuture* */
+ return x4;
+ function test5() → asy::Future<core::int*>* async /* futureValueType= core::int* */
+ return x5;
+ function test6() → asy::Future<asy::Future<core::int*>*>* async /* futureValueType= asy::Future<core::int*>* */
+ return x6;
+ function test7() → asy::Future<FutureOr<core::int*>*>* async /* futureValueType= FutureOr<core::int*>* */
+ return x7;
+ function test8() → asy::Future<self::MyFuture*>* async /* futureValueType= self::MyFuture* */
+ return x8;
+ function test9() → asy::Future<core::int*>* async /* futureValueType= core::int* */
+ return x9;
+ core::int* y0 = await x0;
+ core::int* y1 = await x1;
+ asy::Future<core::int*>* y2 = await x2;
+ FutureOr<core::int*>* y3 = await x3;
+ self::MyFuture* y4 = await x4;
+ core::int* y5 = await x5;
+ asy::Future<core::int*>* y6 = await x6;
+ FutureOr<core::int*>* y7 = await x7;
+ self::MyFuture* y8 = await x8;
+ core::int* y9 = await x9;
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.weak.transformed.expect
index 2324c89..366738b 100644
--- a/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/async_closure_return_type_flatten.dart.weak.transformed.expect
@@ -7,33 +7,7 @@
static field asy::Future<core::int*>* futureInt = null;
static field () →* asy::Future<core::int*>* f = () → asy::Future<core::int*>* => self::futureInt;
-static field () →* asy::Future<core::int*>* g = () → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = self::futureInt;
- break #L1;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
-};
+static field () →* asy::Future<core::int*>* g = () → asy::Future<core::int*>* async /* futureValueType= core::int* */ => self::futureInt;
static method main() → dynamic {
self::f;
self::g;
diff --git a/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.weak.transformed.expect
index d92144a..dcce00c 100644
--- a/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/async_closure_return_type_future.dart.weak.transformed.expect
@@ -3,33 +3,7 @@
import "dart:async" as asy;
import "dart:core" as core;
-static field () →* asy::Future<core::int*>* f = () → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = 0;
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
-};
+static field () →* asy::Future<core::int*>* f = () → asy::Future<core::int*>* async /* futureValueType= core::int* */ => 0;
static method main() → dynamic {
self::f;
}
diff --git a/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.weak.transformed.expect
index 23c7b00..5454d59 100644
--- a/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/async_closure_return_type_future_or.dart.weak.transformed.expect
@@ -7,33 +7,7 @@
static field FutureOr<core::int*>* futureOrInt = null;
static field () →* FutureOr<core::int*>* f = () → FutureOr<core::int*>* => self::futureOrInt;
-static field () →* asy::Future<core::int*>* g = () → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = self::futureOrInt;
- break #L1;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
-};
+static field () →* asy::Future<core::int*>* g = () → asy::Future<core::int*>* async /* futureValueType= core::int* */ => self::futureOrInt;
static method main() → dynamic {
self::f;
self::g;
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.transformed.expect
index 68357cb..c2fcd34 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_futures.dart.weak.transformed.expect
@@ -8,38 +8,13 @@
import "dart:math" show Random;
static method test() → dynamic {
- () →* asy::Future<core::num*>* f = () → asy::Future<core::num*>* /* futureValueType= core::num* */ /* originally async */ {
- final asy::_Future<core::num*>* :async_future = new asy::_Future::•<core::num*>();
- core::bool* :is_sync = false;
- FutureOr<core::num*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- if(math::Random::•().{math::Random::nextBool}(){() →* core::bool*}) {
- :return_value = asy::Future::value<core::int*>(1);
- break #L1;
- }
- else {
- :return_value = asy::Future::value<core::double*>(2.0);
- break #L1;
- }
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ () →* asy::Future<core::num*>* f = () → asy::Future<core::num*>* async /* futureValueType= core::num* */ {
+ if(math::Random::•().{math::Random::nextBool}(){() →* core::bool*}) {
+ return asy::Future::value<core::int*>(1);
+ }
+ else {
+ return asy::Future::value<core::double*>(2.0);
+ }
};
asy::Future<core::num*>* g = f(){() →* asy::Future<core::num*>*};
asy::Future<core::int*>* h = f(){() →* asy::Future<core::num*>*} as{TypeError} asy::Future<core::int*>*;
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.transformed.expect
index 6dd1245..a28c927 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_all_returns_are_values.dart.weak.transformed.expect
@@ -8,38 +8,13 @@
import "dart:math" show Random;
static method test() → dynamic {
- () →* asy::Future<core::num*>* f = () → asy::Future<core::num*>* /* futureValueType= core::num* */ /* originally async */ {
- final asy::_Future<core::num*>* :async_future = new asy::_Future::•<core::num*>();
- core::bool* :is_sync = false;
- core::num? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- if(math::Random::•().{math::Random::nextBool}(){() →* core::bool*}) {
- :return_value = 1;
- break #L1;
- }
- else {
- :return_value = 2.0;
- break #L1;
- }
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ () →* asy::Future<core::num*>* f = () → asy::Future<core::num*>* async /* futureValueType= core::num* */ {
+ if(math::Random::•().{math::Random::nextBool}(){() →* core::bool*}) {
+ return 1;
+ }
+ else {
+ return 2.0;
+ }
};
asy::Future<core::num*>* g = f(){() →* asy::Future<core::num*>*};
asy::Future<core::int*>* h = f(){() →* asy::Future<core::num*>*} as{TypeError} asy::Future<core::int*>*;
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.transformed.expect
index ff44989..f4a674b 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_mix_of_values_and_futures.dart.weak.transformed.expect
@@ -8,38 +8,13 @@
import "dart:math" show Random;
static method test() → dynamic {
- () →* asy::Future<core::num*>* f = () → asy::Future<core::num*>* /* futureValueType= core::num* */ /* originally async */ {
- final asy::_Future<core::num*>* :async_future = new asy::_Future::•<core::num*>();
- core::bool* :is_sync = false;
- FutureOr<core::num*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- if(math::Random::•().{math::Random::nextBool}(){() →* core::bool*}) {
- :return_value = asy::Future::value<core::int*>(1);
- break #L1;
- }
- else {
- :return_value = 2.0;
- break #L1;
- }
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ () →* asy::Future<core::num*>* f = () → asy::Future<core::num*>* async /* futureValueType= core::num* */ {
+ if(math::Random::•().{math::Random::nextBool}(){() →* core::bool*}) {
+ return asy::Future::value<core::int*>(1);
+ }
+ else {
+ return 2.0;
+ }
};
asy::Future<core::num*>* g = f(){() →* asy::Future<core::num*>*};
asy::Future<core::int*>* h = f(){() →* asy::Future<core::num*>*} as{TypeError} asy::Future<core::int*>*;
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_star.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_star.dart.weak.transformed.expect
index 5730a20..f68b064 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_async_star.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_async_star.dart.weak.transformed.expect
@@ -2,48 +2,14 @@
import self as self;
import "dart:async" as asy;
import "dart:core" as core;
-import "dart:_internal" as _in;
import "dart:async";
static method test() → dynamic {
- () →* asy::Stream<core::num*>* f = () → asy::Stream<core::num*>* /* originally async* */ {
- asy::_AsyncStarStreamController<core::num*>* :controller;
- dynamic :controller_stream;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L1:
- {
- if(:controller.{asy::_AsyncStarStreamController::add}(1){(core::num*) → core::bool})
- return null;
- else
- [yield] null;
- asy::Stream<core::double*>* s;
- :controller.{asy::_AsyncStarStreamController::addStream}(s){(asy::Stream<core::num*>) → void};
- [yield] null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- return null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::num*>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::num*>};
- return :controller_stream;
+ () →* asy::Stream<core::num*>* f = () → asy::Stream<core::num*>* async* {
+ yield 1;
+ asy::Stream<core::double*>* s;
+ yield* s;
};
asy::Stream<core::num*>* g = f(){() →* asy::Stream<core::num*>*};
asy::Stream<core::int*>* h = f(){() →* asy::Stream<core::num*>*} as{TypeError} asy::Stream<core::int*>*;
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.transformed.expect
index 82fc16a..2d31d8e 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async.dart.weak.transformed.expect
@@ -2,64 +2,14 @@
import self as self;
import "dart:async" as asy;
import "dart:core" as core;
-import "dart:_internal" as _in;
import "dart:async";
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- () →* asy::Future<Null>* f = () → asy::Future<Null>* /* futureValueType= Null */ /* originally async */ {
- final asy::_Future<Null>* :async_future = new asy::_Future::•<Null>();
- core::bool* :is_sync = false;
- FutureOr<Null>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = null;
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- };
- asy::Future<dynamic>* y = f(){() →* asy::Future<Null>*};
- asy::Future<core::String*>* z = f(){() →* asy::Future<Null>*};
- [yield] let dynamic #t1 = asy::_awaitHelper(f(){() →* asy::Future<Null>*}, :async_op_then, :async_op_error) in null;
- core::String* s = _in::unsafeCast<Null>(:result_or_exception);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ () →* asy::Future<Null>* f = () → asy::Future<Null>* async /* futureValueType= Null */ {
+ return null;
+ };
+ asy::Future<dynamic>* y = f(){() →* asy::Future<Null>*};
+ asy::Future<core::String*>* z = f(){() →* asy::Future<Null>*};
+ core::String* s = await f(){() →* asy::Future<Null>*};
}
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.transformed.expect
index d81d2c2..9a6dc27 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_infer_bottom_async_star.dart.weak.transformed.expect
@@ -2,70 +2,14 @@
import self as self;
import "dart:async" as asy;
import "dart:core" as core;
-import "dart:_internal" as _in;
import "dart:async";
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- () →* asy::Stream<Null>* f = () → asy::Stream<Null>* /* originally async* */ {
- asy::_AsyncStarStreamController<Null>* :controller;
- dynamic :controller_stream;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L2:
- {
- if(:controller.{asy::_AsyncStarStreamController::add}(null){(Null) → core::bool})
- return null;
- else
- [yield] null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<Null>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<Null>};
- return :controller_stream;
- };
- asy::Stream<dynamic>* y = f(){() →* asy::Stream<Null>*};
- asy::Stream<core::String*>* z = f(){() →* asy::Stream<Null>*};
- [yield] let dynamic #t1 = asy::_awaitHelper(f(){() →* asy::Stream<Null>*}.{asy::Stream::first}{asy::Future<Null>*}, :async_op_then, :async_op_error) in null;
- core::String* s = _in::unsafeCast<Null>(:result_or_exception);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ () →* asy::Stream<Null>* f = () → asy::Stream<Null>* async* {
+ yield null;
+ };
+ asy::Stream<dynamic>* y = f(){() →* asy::Stream<Null>*};
+ asy::Stream<core::String*>* z = f(){() →* asy::Stream<Null>*};
+ core::String* s = await f(){() →* asy::Stream<Null>*}.{asy::Stream::first}{asy::Future<Null>*};
}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.weak.transformed.expect
index 7a300f3..9b9355c 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_async_await.dart.weak.transformed.expect
@@ -2,38 +2,11 @@
import self as self;
import "dart:async" as asy;
import "dart:core" as core;
-import "dart:_internal" as _in;
import "dart:async";
-static method main() → asy::Future<dynamic>* /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- dynamic d;
- [yield] let dynamic #t1 = asy::_awaitHelper(core::_GrowableList::_literal1<core::int*>(d as{TypeError,ForDynamic} core::int*), :async_op_then, :async_op_error) in null;
- core::List<core::int*>* l0 = _in::unsafeCast<core::List<core::int*>*>(:result_or_exception);
- [yield] let dynamic #t2 = asy::_awaitHelper(asy::Future::value<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(d as{TypeError,ForDynamic} core::int*)), :async_op_then, :async_op_error) in null;
- core::List<core::int*>* l1 = _in::unsafeCast<core::List<core::int*>*>(:result_or_exception);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → asy::Future<dynamic>* async /* futureValueType= dynamic */ {
+ dynamic d;
+ core::List<core::int*>* l0 = await core::_GrowableList::_literal1<core::int*>(d as{TypeError,ForDynamic} core::int*);
+ core::List<core::int*>* l1 = await asy::Future::value<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(d as{TypeError,ForDynamic} core::int*));
}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.weak.transformed.expect
index a0160b8..e9a5f94 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_for_each.dart.weak.transformed.expect
@@ -2,7 +2,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -59,276 +58,159 @@
}
static method F<T extends core::Object* = dynamic>() → self::F::T*
return null;
-static method f() → asy::Future<dynamic>* /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- dynamic :exception0;
- dynamic :stack_trace0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
+static method f() → asy::Future<dynamic>* async /* futureValueType= dynamic */ {
+ dynamic d;
+ core::Object* o;
+ {
+ core::Iterator<dynamic>* :sync-for-iterator = self::F<core::Iterable<dynamic>*>().{core::Iterable::iterator}{core::Iterator<dynamic>*};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ dynamic x = :sync-for-iterator.{core::Iterator::current}{dynamic};
+ {}
+ }
+ }
+ {
+ core::Iterator<dynamic>* :sync-for-iterator = self::F<core::Iterable<dynamic>*>().{core::Iterable::iterator}{core::Iterator<dynamic>*};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ dynamic x = :sync-for-iterator.{core::Iterator::current}{dynamic};
+ {}
+ }
+ }
+ {
+ core::Iterator<core::Object*>* :sync-for-iterator = self::F<core::Iterable<core::Object*>*>().{core::Iterable::iterator}{core::Iterator<core::Object*>*};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ core::Object* x = :sync-for-iterator.{core::Iterator::current}{core::Object*};
+ {}
+ }
+ }
+ {
+ core::Iterator<dynamic>* :sync-for-iterator = self::F<core::Iterable<dynamic>*>().{core::Iterable::iterator}{core::Iterator<dynamic>*};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ final dynamic #t1 = :sync-for-iterator.{core::Iterator::current}{dynamic};
{
- dynamic d;
- core::Object* o;
+ d = #t1;
+ }
+ }
+ }
+ {
+ core::Iterator<core::Object*>* :sync-for-iterator = self::F<core::Iterable<core::Object*>*>().{core::Iterable::iterator}{core::Iterator<core::Object*>*};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ final core::Object* #t2 = :sync-for-iterator.{core::Iterator::current}{core::Object*};
+ {
+ o = #t2;
+ }
+ }
+ }
+ {
+ asy::Stream<dynamic>* :stream = self::F<asy::Stream<dynamic>*>();
+ asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
+ try
+ while (let dynamic #t3 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ dynamic x = :for-iterator.{asy::_StreamIterator::current}{dynamic};
+ {}
+ }
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ {
+ asy::Stream<dynamic>* :stream = self::F<asy::Stream<dynamic>*>();
+ asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
+ try
+ while (let dynamic #t4 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ dynamic x = :for-iterator.{asy::_StreamIterator::current}{dynamic};
+ {}
+ }
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ {
+ asy::Stream<core::Object*>* :stream = self::F<asy::Stream<core::Object*>*>();
+ asy::_StreamIterator<core::Object*>* :for-iterator = new asy::_StreamIterator::•<core::Object*>(:stream);
+ try
+ while (let dynamic #t5 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ core::Object* x = :for-iterator.{asy::_StreamIterator::current}{core::Object*};
+ {}
+ }
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::Object*>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ {
+ asy::Stream<dynamic>* :stream = self::F<asy::Stream<dynamic>*>();
+ asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
+ try
+ while (let dynamic #t6 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ final dynamic #t7 = :for-iterator.{asy::_StreamIterator::current}{dynamic};
{
- core::Iterator<dynamic>* :sync-for-iterator = self::F<core::Iterable<dynamic>*>().{core::Iterable::iterator}{core::Iterator<dynamic>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- dynamic x = :sync-for-iterator.{core::Iterator::current}{dynamic};
- {}
- }
- }
- {
- core::Iterator<dynamic>* :sync-for-iterator = self::F<core::Iterable<dynamic>*>().{core::Iterable::iterator}{core::Iterator<dynamic>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- dynamic x = :sync-for-iterator.{core::Iterator::current}{dynamic};
- {}
- }
- }
- {
- core::Iterator<core::Object*>* :sync-for-iterator = self::F<core::Iterable<core::Object*>*>().{core::Iterable::iterator}{core::Iterator<core::Object*>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- core::Object* x = :sync-for-iterator.{core::Iterator::current}{core::Object*};
- {}
- }
- }
- {
- core::Iterator<dynamic>* :sync-for-iterator = self::F<core::Iterable<dynamic>*>().{core::Iterable::iterator}{core::Iterator<dynamic>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- final dynamic #t1 = :sync-for-iterator.{core::Iterator::current}{dynamic};
- {
- d = #t1;
- }
- }
- }
- {
- core::Iterator<core::Object*>* :sync-for-iterator = self::F<core::Iterable<core::Object*>*>().{core::Iterable::iterator}{core::Iterator<core::Object*>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- final core::Object* #t2 = :sync-for-iterator.{core::Iterator::current}{core::Object*};
- {
- o = #t2;
- }
- }
- }
- {
- asy::Stream<dynamic>* :stream = self::F<asy::Stream<dynamic>*>();
- asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
- try
- #L2:
- while (true) {
- dynamic #t3 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- dynamic x = :for-iterator.{asy::_StreamIterator::current}{dynamic};
- {}
- }
- else
- break #L2;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
- [yield] let dynamic #t5 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
- }
- {
- asy::Stream<dynamic>* :stream = self::F<asy::Stream<dynamic>*>();
- asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
- try
- #L3:
- while (true) {
- dynamic #t6 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t7 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- dynamic x = :for-iterator.{asy::_StreamIterator::current}{dynamic};
- {}
- }
- else
- break #L3;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
- [yield] let dynamic #t8 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
- }
- {
- asy::Stream<core::Object*>* :stream = self::F<asy::Stream<core::Object*>*>();
- asy::_StreamIterator<core::Object*>* :for-iterator = new asy::_StreamIterator::•<core::Object*>(:stream);
- try
- #L4:
- while (true) {
- dynamic #t9 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t10 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- core::Object* x = :for-iterator.{asy::_StreamIterator::current}{core::Object*};
- {}
- }
- else
- break #L4;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::Object*>?} == null)) {
- [yield] let dynamic #t11 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
- }
- {
- asy::Stream<dynamic>* :stream = self::F<asy::Stream<dynamic>*>();
- asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
- try
- #L5:
- while (true) {
- dynamic #t12 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t13 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- final dynamic #t14 = :for-iterator.{asy::_StreamIterator::current}{dynamic};
- {
- d = #t14;
- }
- }
- else
- break #L5;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
- [yield] let dynamic #t15 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
- }
- {
- asy::Stream<core::Object*>* :stream = self::F<asy::Stream<core::Object*>*>();
- asy::_StreamIterator<core::Object*>* :for-iterator = new asy::_StreamIterator::•<core::Object*>(:stream);
- try
- #L6:
- while (true) {
- dynamic #t16 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t17 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- final core::Object* #t18 = :for-iterator.{asy::_StreamIterator::current}{core::Object*};
- {
- o = #t18;
- }
- }
- else
- break #L6;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::Object*>?} == null)) {
- [yield] let dynamic #t19 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ d = #t7;
}
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ {
+ asy::Stream<core::Object*>* :stream = self::F<asy::Stream<core::Object*>*>();
+ asy::_StreamIterator<core::Object*>* :for-iterator = new asy::_StreamIterator::•<core::Object*>(:stream);
+ try
+ while (let dynamic #t8 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ final core::Object* #t9 = :for-iterator.{asy::_StreamIterator::current}{core::Object*};
+ {
+ o = #t9;
+ }
+ }
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::Object*>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
}
-static method main() → asy::Future<dynamic>* /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- dynamic :exception0;
- dynamic :stack_trace0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L7:
- {
- {
- core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::iterator}{core::Iterator<core::int*>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- core::int* x = :sync-for-iterator.{core::Iterator::current}{core::int*};
- {}
- }
- }
- {
- core::Iterator<core::num*>* :sync-for-iterator = core::_GrowableList::_literal3<core::num*>(1, 2, 3).{core::Iterable::iterator}{core::Iterator<core::num*>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- core::num* x = :sync-for-iterator.{core::Iterator::current}{core::num*};
- {}
- }
- }
- {
- core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::iterator}{core::Iterator<core::int*>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- core::int* x = :sync-for-iterator.{core::Iterator::current}{core::int*};
- {}
- }
- }
- {
- self::MyStream<core::int*>* :stream = self::MyStream::•<core::int*>();
- asy::_StreamIterator<core::int*>* :for-iterator = new asy::_StreamIterator::•<core::int*>(:stream);
- try
- #L8:
- while (true) {
- dynamic #t20 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t21 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- core::int* x = :for-iterator.{asy::_StreamIterator::current}{core::int*};
- {}
- }
- else
- break #L8;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int*>?} == null)) {
- [yield] let dynamic #t22 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
- }
- {
- self::MyStream<core::int*>* :stream = self::MyStream::•<core::int*>();
- asy::_StreamIterator<core::int*>* :for-iterator = new asy::_StreamIterator::•<core::int*>(:stream);
- try
- #L9:
- while (true) {
- dynamic #t23 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t24 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- core::int* x = :for-iterator.{asy::_StreamIterator::current}{core::int*};
- {}
- }
- else
- break #L9;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int*>?} == null)) {
- [yield] let dynamic #t25 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
- }
+static method main() → asy::Future<dynamic>* async /* futureValueType= dynamic */ {
+ {
+ core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ core::int* x = :sync-for-iterator.{core::Iterator::current}{core::int*};
+ {}
+ }
+ }
+ {
+ core::Iterator<core::num*>* :sync-for-iterator = core::_GrowableList::_literal3<core::num*>(1, 2, 3).{core::Iterable::iterator}{core::Iterator<core::num*>*};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ core::num* x = :sync-for-iterator.{core::Iterator::current}{core::num*};
+ {}
+ }
+ }
+ {
+ core::Iterator<core::int*>* :sync-for-iterator = core::_GrowableList::_literal3<core::int*>(1, 2, 3).{core::Iterable::iterator}{core::Iterator<core::int*>*};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ core::int* x = :sync-for-iterator.{core::Iterator::current}{core::int*};
+ {}
+ }
+ }
+ {
+ self::MyStream<core::int*>* :stream = self::MyStream::•<core::int*>();
+ asy::_StreamIterator<core::int*>* :for-iterator = new asy::_StreamIterator::•<core::int*>(:stream);
+ try
+ while (let dynamic #t10 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ core::int* x = :for-iterator.{asy::_StreamIterator::current}{core::int*};
+ {}
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int*>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ {
+ self::MyStream<core::int*>* :stream = self::MyStream::•<core::int*>();
+ asy::_StreamIterator<core::int*>* :for-iterator = new asy::_StreamIterator::•<core::int*>(:stream);
+ try
+ while (let dynamic #t11 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ core::int* x = :for-iterator.{asy::_StreamIterator::current}{core::int*};
+ {}
+ }
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int*>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
}
constants {
diff --git a/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.weak.transformed.expect
index 02bca84..35e82c4 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.weak.transformed.expect
@@ -29,7 +29,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -84,58 +83,19 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
abstract member-signature method listen((self::MyStream::T*) →* void onData, {core::Function* onError = #C1, () →* void onDone = #C1, core::bool* cancelOnError = #C1}) → asy::StreamSubscription<self::MyStream::T*>*; -> asy::Stream::listen
}
-static method foo() → asy::Stream<core::List<core::int*>*>* /* originally async* */ {
- asy::_AsyncStarStreamController<core::List<core::int*>*>* :controller;
- dynamic :controller_stream;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L1:
- {
- if(:controller.{asy::_AsyncStarStreamController::add}(core::_GrowableList::•<core::int*>(0)){(core::List<core::int*>*) → core::bool})
- return null;
- else
- [yield] null;
- if(:controller.{asy::_AsyncStarStreamController::add}(invalid-expression "pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart:16:69: Error: A value of type 'MyStream<dynamic>' can't be assigned to a variable of type 'List<int>'.
+static method foo() → asy::Stream<core::List<core::int*>*>* async* {
+ yield core::_GrowableList::•<core::int*>(0);
+ yield invalid-expression "pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart:16:69: Error: A value of type 'MyStream<dynamic>' can't be assigned to a variable of type 'List<int>'.
- 'MyStream' is from 'pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart'.
- 'List' is from 'dart:core'.
yield /*error:YIELD_OF_INVALID_TYPE*/ new /*@ typeArgs=dynamic */ MyStream();
- ^" in self::MyStream::•<dynamic>() as{TypeError} core::List<core::int*>*){(core::List<core::int*>*) → core::bool})
- return null;
- else
- [yield] null;
- :controller.{asy::_AsyncStarStreamController::addStream}(invalid-expression "pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart:17:64: Error: A value of type 'List<dynamic>' can't be assigned to a variable of type 'Stream<List<int>>'.
+ ^" in self::MyStream::•<dynamic>() as{TypeError} core::List<core::int*>*;
+ yield* invalid-expression "pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart:17:64: Error: A value of type 'List<dynamic>' can't be assigned to a variable of type 'Stream<List<int>>'.
- 'List' is from 'dart:core'.
- 'Stream' is from 'dart:async'.
yield* /*error:YIELD_OF_INVALID_TYPE*/ /*@typeArgs=dynamic*/ [];
- ^" in core::_GrowableList::•<dynamic>(0) as{TypeError} asy::Stream<core::List<core::int*>*>*){(asy::Stream<core::List<core::int*>*>) → void};
- [yield] null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- return null;
- :controller.{asy::_AsyncStarStreamController::addStream}(self::MyStream::•<core::List<core::int*>*>()){(asy::Stream<core::List<core::int*>*>) → void};
- [yield] null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- return null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::List<core::int*>*>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::List<core::int*>*>};
- return :controller_stream;
+ ^" in core::_GrowableList::•<dynamic>(0) as{TypeError} asy::Stream<core::List<core::int*>*>*;
+ yield* self::MyStream::•<core::List<core::int*>*>();
}
static method bar() → core::Iterable<core::Map<core::int*, core::int*>*>* /* originally sync* */ {
function :sync_op_gen() → (core::_SyncIterator<dynamic>*, dynamic, dynamic) →* core::bool* {
diff --git a/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.weak.transformed.expect
index 258db25..52fd949 100644
--- a/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/for_each_downcast_iterable.dart.weak.transformed.expect
@@ -1,98 +1,52 @@
library test;
import self as self;
-import "dart:async" as asy;
import "dart:core" as core;
-import "dart:_internal" as _in;
+import "dart:async" as asy;
-static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- dynamic :exception0;
- dynamic :stack_trace0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
+static method test() → dynamic async /* futureValueType= dynamic */ {
+ core::Object* o;
+ {
+ core::Iterator<dynamic>* :sync-for-iterator = (o as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ dynamic x = :sync-for-iterator.{core::Iterator::current}{dynamic};
+ {}
+ }
+ }
+ {
+ asy::Stream<dynamic>* :stream = o as{TypeError} asy::Stream<dynamic>*;
+ asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
+ try
+ while (let dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ dynamic x = :for-iterator.{asy::_StreamIterator::current}{dynamic};
+ {}
+ }
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ core::int* y;
+ {
+ core::Iterator<dynamic>* :sync-for-iterator = (o as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ final dynamic #t2 = :sync-for-iterator.{core::Iterator::current}{dynamic};
{
- core::Object* o;
+ y = #t2 as{TypeError,ForDynamic} core::int*;
+ }
+ }
+ }
+ {
+ asy::Stream<dynamic>* :stream = o as{TypeError} asy::Stream<dynamic>*;
+ asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
+ try
+ while (let dynamic #t3 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ final dynamic #t4 = :for-iterator.{asy::_StreamIterator::current}{dynamic};
{
- core::Iterator<dynamic>* :sync-for-iterator = (o as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- dynamic x = :sync-for-iterator.{core::Iterator::current}{dynamic};
- {}
- }
- }
- {
- asy::Stream<dynamic>* :stream = o as{TypeError} asy::Stream<dynamic>*;
- asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
- try
- #L2:
- while (true) {
- dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t2 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- dynamic x = :for-iterator.{asy::_StreamIterator::current}{dynamic};
- {}
- }
- else
- break #L2;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
- [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
- }
- core::int* y;
- {
- core::Iterator<dynamic>* :sync-for-iterator = (o as{TypeError} core::Iterable<dynamic>*).{core::Iterable::iterator}{core::Iterator<dynamic>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- final dynamic #t4 = :sync-for-iterator.{core::Iterator::current}{dynamic};
- {
- y = #t4 as{TypeError,ForDynamic} core::int*;
- }
- }
- }
- {
- asy::Stream<dynamic>* :stream = o as{TypeError} asy::Stream<dynamic>*;
- asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
- try
- #L3:
- while (true) {
- dynamic #t5 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t6 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- final dynamic #t7 = :for-iterator.{asy::_StreamIterator::current}{dynamic};
- {
- y = #t7 as{TypeError,ForDynamic} core::int*;
- }
- }
- else
- break #L3;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
- [yield] let dynamic #t8 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ y = #t4 as{TypeError,ForDynamic} core::int*;
}
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_then.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then.dart.weak.transformed.expect
index 5c43118..06b5b67 100644
--- a/pkg/front_end/testcases/inference/future_then.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then.dart.weak.transformed.expect
@@ -2,7 +2,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -35,175 +34,21 @@
}
static method test() → void {
self::MyFuture<dynamic>* f;
- asy::Future<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(asy::Future::value<core::int*>(3), :async_op_then, :async_op_error) in null;
- :return_value = _in::unsafeCast<core::int*>(:result_or_exception);
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ asy::Future<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => await asy::Future::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+ asy::Future<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ return await asy::Future::value<core::int*>(3);
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- asy::Future<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = asy::_awaitHelper(asy::Future::value<core::int*>(3), :async_op_then, :async_op_error) in null;
- :return_value = _in::unsafeCast<core::int*>(:result_or_exception);
- break #L2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- asy::Future<core::int*>* t3 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- :return_value = 3;
- break #L3;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- asy::Future<core::int*>* t4 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- :return_value = 3;
- break #L4;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ asy::Future<core::int*>* t3 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => 3){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+ asy::Future<core::int*>* t4 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ return 3;
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* => asy::Future::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
asy::Future<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* {
return asy::Future::value<core::int*>(3);
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- asy::Future<core::int*>* t7 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- :return_value = asy::Future::value<core::int*>(3);
- break #L5;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- asy::Future<core::int*>* t8 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L6:
- {
- :return_value = asy::Future::value<core::int*>(3);
- break #L6;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ asy::Future<core::int*>* t7 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => asy::Future::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+ asy::Future<core::int*>* t8 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ return asy::Future::value<core::int*>(3);
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_then_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_2.dart.weak.transformed.expect
index a14d3e6..8e3d262 100644
--- a/pkg/front_end/testcases/inference/future_then_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_2.dart.weak.transformed.expect
@@ -2,7 +2,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -35,175 +34,21 @@
}
static method test() → void {
self::MyFuture<dynamic>* f;
- asy::Future<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(new self::MyFuture::value<core::int*>(3), :async_op_then, :async_op_error) in null;
- :return_value = _in::unsafeCast<core::int*>(:result_or_exception);
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ asy::Future<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => await new self::MyFuture::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+ asy::Future<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ return await new self::MyFuture::value<core::int*>(3);
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- asy::Future<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = asy::_awaitHelper(new self::MyFuture::value<core::int*>(3), :async_op_then, :async_op_error) in null;
- :return_value = _in::unsafeCast<core::int*>(:result_or_exception);
- break #L2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- asy::Future<core::int*>* t3 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- :return_value = 3;
- break #L3;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- asy::Future<core::int*>* t4 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- :return_value = 3;
- break #L4;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ asy::Future<core::int*>* t3 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => 3){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+ asy::Future<core::int*>* t4 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ return 3;
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* => new self::MyFuture::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
asy::Future<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* {
return new self::MyFuture::value<core::int*>(3);
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- asy::Future<core::int*>* t7 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- :return_value = new self::MyFuture::value<core::int*>(3);
- break #L5;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- asy::Future<core::int*>* t8 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L6:
- {
- :return_value = new self::MyFuture::value<core::int*>(3);
- break #L6;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ asy::Future<core::int*>* t7 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => new self::MyFuture::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+ asy::Future<core::int*>* t8 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ return new self::MyFuture::value<core::int*>(3);
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_then_3.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_3.dart.weak.transformed.expect
index e39900a..53f1486 100644
--- a/pkg/front_end/testcases/inference/future_then_3.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_3.dart.weak.transformed.expect
@@ -2,7 +2,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -35,175 +34,21 @@
}
static method test() → void {
self::MyFuture<dynamic>* f;
- self::MyFuture<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(asy::Future::value<core::int*>(3), :async_op_then, :async_op_error) in null;
- :return_value = _in::unsafeCast<core::int*>(:result_or_exception);
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ self::MyFuture<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => await asy::Future::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+ self::MyFuture<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ return await asy::Future::value<core::int*>(3);
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- self::MyFuture<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = asy::_awaitHelper(asy::Future::value<core::int*>(3), :async_op_then, :async_op_error) in null;
- :return_value = _in::unsafeCast<core::int*>(:result_or_exception);
- break #L2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- self::MyFuture<core::int*>* t3 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- :return_value = 3;
- break #L3;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- self::MyFuture<core::int*>* t4 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- :return_value = 3;
- break #L4;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ self::MyFuture<core::int*>* t3 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => 3){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+ self::MyFuture<core::int*>* t4 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ return 3;
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
self::MyFuture<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* => asy::Future::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
self::MyFuture<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* {
return asy::Future::value<core::int*>(3);
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- self::MyFuture<core::int*>* t7 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- :return_value = asy::Future::value<core::int*>(3);
- break #L5;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- self::MyFuture<core::int*>* t8 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L6:
- {
- :return_value = asy::Future::value<core::int*>(3);
- break #L6;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ self::MyFuture<core::int*>* t7 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => asy::Future::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+ self::MyFuture<core::int*>* t8 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ return asy::Future::value<core::int*>(3);
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_then_4.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_4.dart.weak.transformed.expect
index 3d41dfa..e29cac0 100644
--- a/pkg/front_end/testcases/inference/future_then_4.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_4.dart.weak.transformed.expect
@@ -2,7 +2,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -35,175 +34,21 @@
}
static method test() → void {
self::MyFuture<dynamic>* f;
- self::MyFuture<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(new self::MyFuture::value<core::int*>(3), :async_op_then, :async_op_error) in null;
- :return_value = _in::unsafeCast<core::int*>(:result_or_exception);
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ self::MyFuture<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => await new self::MyFuture::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+ self::MyFuture<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ return await new self::MyFuture::value<core::int*>(3);
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- self::MyFuture<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = asy::_awaitHelper(new self::MyFuture::value<core::int*>(3), :async_op_then, :async_op_error) in null;
- :return_value = _in::unsafeCast<core::int*>(:result_or_exception);
- break #L2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- self::MyFuture<core::int*>* t3 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- :return_value = 3;
- break #L3;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- self::MyFuture<core::int*>* t4 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- :return_value = 3;
- break #L4;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ self::MyFuture<core::int*>* t3 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => 3){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+ self::MyFuture<core::int*>* t4 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ return 3;
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
self::MyFuture<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* => new self::MyFuture::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
self::MyFuture<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* {
return new self::MyFuture::value<core::int*>(3);
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- self::MyFuture<core::int*>* t7 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- :return_value = new self::MyFuture::value<core::int*>(3);
- break #L5;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- self::MyFuture<core::int*>* t8 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L6:
- {
- :return_value = new self::MyFuture::value<core::int*>(3);
- break #L6;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ self::MyFuture<core::int*>* t7 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => new self::MyFuture::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+ self::MyFuture<core::int*>* t8 = f.{self::MyFuture::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ return new self::MyFuture::value<core::int*>(3);
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_then_5.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_5.dart.weak.transformed.expect
index cce1d0b..1503ace 100644
--- a/pkg/front_end/testcases/inference/future_then_5.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_5.dart.weak.transformed.expect
@@ -2,7 +2,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -35,175 +34,21 @@
}
static method test() → void {
asy::Future<dynamic>* f;
- asy::Future<core::int*>* t1 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(new self::MyFuture::value<core::int*>(3), :async_op_then, :async_op_error) in null;
- :return_value = _in::unsafeCast<core::int*>(:result_or_exception);
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ asy::Future<core::int*>* t1 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => await new self::MyFuture::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+ asy::Future<core::int*>* t2 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ return await new self::MyFuture::value<core::int*>(3);
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
- asy::Future<core::int*>* t2 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = asy::_awaitHelper(new self::MyFuture::value<core::int*>(3), :async_op_then, :async_op_error) in null;
- :return_value = _in::unsafeCast<core::int*>(:result_or_exception);
- break #L2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
- asy::Future<core::int*>* t3 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- :return_value = 3;
- break #L3;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
- asy::Future<core::int*>* t4 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- :return_value = 3;
- break #L4;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ asy::Future<core::int*>* t3 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => 3){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+ asy::Future<core::int*>* t4 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ return 3;
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
asy::Future<core::int*>* t5 = f.{asy::Future::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* => new self::MyFuture::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
asy::Future<core::int*>* t6 = f.{asy::Future::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* {
return new self::MyFuture::value<core::int*>(3);
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
- asy::Future<core::int*>* t7 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- :return_value = new self::MyFuture::value<core::int*>(3);
- break #L5;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
- asy::Future<core::int*>* t8 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L6:
- {
- :return_value = new self::MyFuture::value<core::int*>(3);
- break #L6;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ asy::Future<core::int*>* t7 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => new self::MyFuture::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+ asy::Future<core::int*>* t8 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ return new self::MyFuture::value<core::int*>(3);
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_then_6.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_6.dart.weak.transformed.expect
index 36a0f77..9ce9f77 100644
--- a/pkg/front_end/testcases/inference/future_then_6.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_6.dart.weak.transformed.expect
@@ -2,7 +2,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -35,175 +34,21 @@
}
static method test() → void {
asy::Future<dynamic>* f;
- asy::Future<core::int*>* t1 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(asy::Future::value<core::int*>(3), :async_op_then, :async_op_error) in null;
- :return_value = _in::unsafeCast<core::int*>(:result_or_exception);
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ asy::Future<core::int*>* t1 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => await asy::Future::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+ asy::Future<core::int*>* t2 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ return await asy::Future::value<core::int*>(3);
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
- asy::Future<core::int*>* t2 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = asy::_awaitHelper(asy::Future::value<core::int*>(3), :async_op_then, :async_op_error) in null;
- :return_value = _in::unsafeCast<core::int*>(:result_or_exception);
- break #L2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
- asy::Future<core::int*>* t3 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- :return_value = 3;
- break #L3;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
- asy::Future<core::int*>* t4 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- :return_value = 3;
- break #L4;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ asy::Future<core::int*>* t3 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => 3){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+ asy::Future<core::int*>* t4 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ return 3;
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
asy::Future<core::int*>* t5 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* => asy::Future::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
asy::Future<core::int*>* t6 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* {
return asy::Future::value<core::int*>(3);
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
- asy::Future<core::int*>* t7 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- :return_value = asy::Future::value<core::int*>(3);
- break #L5;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
- asy::Future<core::int*>* t8 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L6:
- {
- :return_value = asy::Future::value<core::int*>(3);
- break #L6;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ asy::Future<core::int*>* t7 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => asy::Future::value<core::int*>(3)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+ asy::Future<core::int*>* t8 = f.{asy::Future::then}<core::int*>((dynamic _) → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ return asy::Future::value<core::int*>(3);
}){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.transformed.expect
index 0fbde92..864842a 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional.dart.weak.transformed.expect
@@ -2,7 +2,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -35,70 +34,9 @@
}
static method test() → void {
self::MyFuture<core::bool*>* f;
- asy::Future<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- core::int* :async_temporary_0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- if(x) {
- :async_temporary_0 = 2;
- }
- else {
- [yield] let dynamic #t1 = asy::_awaitHelper(asy::Future::value<core::int*>(3), :async_op_then, :async_op_error) in null;
- :async_temporary_0 = _in::unsafeCast<core::int*>(:result_or_exception);
- }
- :return_value = _in::unsafeCast<core::int*>(:async_temporary_0);
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- asy::Future<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = asy::_awaitHelper(x, :async_op_then, :async_op_error) in null;
- :return_value = (_in::unsafeCast<core::bool*>(:result_or_exception) ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ asy::Future<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => x ?{core::int*} 2 : await asy::Future::value<core::int*>(3)){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+ asy::Future<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* async /* futureValueType= core::int* */ {
+ return (await x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
}){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
asy::Future<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* {
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.transformed.expect
index b88ca68..fddad42 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_2.dart.weak.transformed.expect
@@ -2,7 +2,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -35,70 +34,9 @@
}
static method test() → void {
self::MyFuture<core::bool*>* f;
- asy::Future<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- core::int* :async_temporary_0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- if(x) {
- :async_temporary_0 = 2;
- }
- else {
- [yield] let dynamic #t1 = asy::_awaitHelper(new self::MyFuture::value<core::int*>(3), :async_op_then, :async_op_error) in null;
- :async_temporary_0 = _in::unsafeCast<core::int*>(:result_or_exception);
- }
- :return_value = _in::unsafeCast<core::int*>(:async_temporary_0);
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- asy::Future<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = asy::_awaitHelper(x, :async_op_then, :async_op_error) in null;
- :return_value = (_in::unsafeCast<core::bool*>(:result_or_exception) ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ asy::Future<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => x ?{core::int*} 2 : await new self::MyFuture::value<core::int*>(3)){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+ asy::Future<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* async /* futureValueType= core::int* */ {
+ return (await x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
}){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
asy::Future<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* {
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.transformed.expect
index 6a05bbf..0688642 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_3.dart.weak.transformed.expect
@@ -2,7 +2,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -35,70 +34,9 @@
}
static method test() → void {
self::MyFuture<core::bool*>* f;
- self::MyFuture<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- core::int* :async_temporary_0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- if(x) {
- :async_temporary_0 = 2;
- }
- else {
- [yield] let dynamic #t1 = asy::_awaitHelper(asy::Future::value<core::int*>(3), :async_op_then, :async_op_error) in null;
- :async_temporary_0 = _in::unsafeCast<core::int*>(:result_or_exception);
- }
- :return_value = _in::unsafeCast<core::int*>(:async_temporary_0);
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- self::MyFuture<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = asy::_awaitHelper(x, :async_op_then, :async_op_error) in null;
- :return_value = (_in::unsafeCast<core::bool*>(:result_or_exception) ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ self::MyFuture<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => x ?{core::int*} 2 : await asy::Future::value<core::int*>(3)){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+ self::MyFuture<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* async /* futureValueType= core::int* */ {
+ return (await x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
}){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
self::MyFuture<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
self::MyFuture<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* {
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.transformed.expect
index 34c2ea5..1840033 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_4.dart.weak.transformed.expect
@@ -2,7 +2,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -35,70 +34,9 @@
}
static method test() → void {
self::MyFuture<core::bool*>* f;
- self::MyFuture<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- core::int* :async_temporary_0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- if(x) {
- :async_temporary_0 = 2;
- }
- else {
- [yield] let dynamic #t1 = asy::_awaitHelper(new self::MyFuture::value<core::int*>(3), :async_op_then, :async_op_error) in null;
- :async_temporary_0 = _in::unsafeCast<core::int*>(:result_or_exception);
- }
- :return_value = _in::unsafeCast<core::int*>(:async_temporary_0);
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- self::MyFuture<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = asy::_awaitHelper(x, :async_op_then, :async_op_error) in null;
- :return_value = (_in::unsafeCast<core::bool*>(:result_or_exception) ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ self::MyFuture<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => x ?{core::int*} 2 : await new self::MyFuture::value<core::int*>(3)){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+ self::MyFuture<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* async /* futureValueType= core::int* */ {
+ return (await x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
}){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
self::MyFuture<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
self::MyFuture<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* {
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.transformed.expect
index c47ee35..436d1f4 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_5.dart.weak.transformed.expect
@@ -2,7 +2,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -35,70 +34,9 @@
}
static method test() → void {
asy::Future<core::bool*>* f;
- asy::Future<core::int*>* t1 = f.{asy::Future::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- core::int* :async_temporary_0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- if(x) {
- :async_temporary_0 = 2;
- }
- else {
- [yield] let dynamic #t1 = asy::_awaitHelper(new self::MyFuture::value<core::int*>(3), :async_op_then, :async_op_error) in null;
- :async_temporary_0 = _in::unsafeCast<core::int*>(:result_or_exception);
- }
- :return_value = _in::unsafeCast<core::int*>(:async_temporary_0);
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
- asy::Future<core::int*>* t2 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = asy::_awaitHelper(x, :async_op_then, :async_op_error) in null;
- :return_value = (_in::unsafeCast<core::bool*>(:result_or_exception) ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ asy::Future<core::int*>* t1 = f.{asy::Future::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => x ?{core::int*} 2 : await new self::MyFuture::value<core::int*>(3)){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+ asy::Future<core::int*>* t2 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* async /* futureValueType= core::int* */ {
+ return (await x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
}){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
asy::Future<core::int*>* t5 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : new self::MyFuture::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
asy::Future<core::int*>* t6 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* {
diff --git a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.transformed.expect
index 9c16fa5..30e9a01 100644
--- a/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_conditional_6.dart.weak.transformed.expect
@@ -2,7 +2,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -35,70 +34,9 @@
}
static method test() → void {
asy::Future<core::bool*>* f;
- asy::Future<core::int*>* t1 = f.{asy::Future::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- core::int* :async_temporary_0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- if(x) {
- :async_temporary_0 = 2;
- }
- else {
- [yield] let dynamic #t1 = asy::_awaitHelper(asy::Future::value<core::int*>(3), :async_op_then, :async_op_error) in null;
- :async_temporary_0 = _in::unsafeCast<core::int*>(:result_or_exception);
- }
- :return_value = _in::unsafeCast<core::int*>(:async_temporary_0);
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
- asy::Future<core::int*>* t2 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = asy::_awaitHelper(x, :async_op_then, :async_op_error) in null;
- :return_value = (_in::unsafeCast<core::bool*>(:result_or_exception) ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ asy::Future<core::int*>* t1 = f.{asy::Future::then}<core::int*>((core::bool* x) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => x ?{core::int*} 2 : await asy::Future::value<core::int*>(3)){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
+ asy::Future<core::int*>* t2 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* async /* futureValueType= core::int* */ {
+ return (await x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*;
}){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
asy::Future<core::int*>* t5 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* => (x ?{core::Object*} 2 : asy::Future::value<core::int*>(3)) as{TypeError} FutureOr<core::int*>*){((core::bool*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
asy::Future<core::int*>* t6 = f.{asy::Future::then}<core::int*>((core::bool* x) → FutureOr<core::int*>* {
diff --git a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.transformed.expect
index 83b6d1e..60016a9 100644
--- a/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_ifNull.dart.weak.transformed.expect
@@ -2,7 +2,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -35,75 +34,13 @@
}
static method test() → void {
self::MyFuture<core::int*>* f;
- asy::Future<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((core::int* x) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- core::int* :async_temporary_0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- final core::int* #t1 = x;
- if(#t1 == null) {
- [yield] let dynamic #t2 = asy::_awaitHelper(asy::Future::value<core::int*>(3), :async_op_then, :async_op_error) in null;
- :async_temporary_0 = _in::unsafeCast<core::int*>(:result_or_exception);
- }
- else {
- :async_temporary_0 = #t1;
- }
- :return_value = _in::unsafeCast<core::int*>(:async_temporary_0);
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ asy::Future<core::int*>* t1 = f.{self::MyFuture::then}<core::int*>((core::int* x) → asy::Future<core::int*>* async /* futureValueType= core::int* */ => let final core::int* #t1 = x in #t1 == null ?{core::int*} await asy::Future::value<core::int*>(3) : #t1){((core::int*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+ asy::Future<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((core::int* x) → FutureOr<core::int*>* async /* futureValueType= core::int* */ {
+ return (let final core::int* #t2 = await x in #t2 == null ?{core::Object*} asy::Future::value<core::int*>(3) : #t2) as{TypeError} FutureOr<core::int*>*;
}){((core::int*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- asy::Future<core::int*>* t2 = f.{self::MyFuture::then}<core::int*>((core::int* x) → FutureOr<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t3 = asy::_awaitHelper(x, :async_op_then, :async_op_error) in null;
- :return_value = (let final core::int* #t4 = _in::unsafeCast<core::int*>(:result_or_exception) in #t4 == null ?{core::Object*} asy::Future::value<core::int*>(3) : #t4) as{TypeError} FutureOr<core::int*>*;
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }){((core::int*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
- asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::int* x) → FutureOr<core::int*>* => (let final core::int* #t5 = x in #t5 == null ?{core::Object*} asy::Future::value<core::int*>(3) : #t5) as{TypeError} FutureOr<core::int*>*){((core::int*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
+ asy::Future<core::int*>* t5 = f.{self::MyFuture::then}<core::int*>((core::int* x) → FutureOr<core::int*>* => (let final core::int* #t3 = x in #t3 == null ?{core::Object*} asy::Future::value<core::int*>(3) : #t3) as{TypeError} FutureOr<core::int*>*){((core::int*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
asy::Future<core::int*>* t6 = f.{self::MyFuture::then}<core::int*>((core::int* x) → FutureOr<core::int*>* {
- return (let final core::int* #t6 = x in #t6 == null ?{core::Object*} asy::Future::value<core::int*>(3) : #t6) as{TypeError} FutureOr<core::int*>*;
+ return (let final core::int* #t4 = x in #t4 == null ?{core::Object*} asy::Future::value<core::int*>(3) : #t4) as{TypeError} FutureOr<core::int*>*;
}){((core::int*) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.transformed.expect
index e561f29..727832e 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional.dart.weak.transformed.expect
@@ -32,87 +32,14 @@
no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
-static method g1(core::bool* x) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = (x ?{core::Object*} 42 : asy::Future::value<core::int*>(42)) as{TypeError} FutureOr<core::int*>*;
- break #L1;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+static method g1(core::bool* x) → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ return (x ?{core::Object*} 42 : asy::Future::value<core::int*>(42)) as{TypeError} FutureOr<core::int*>*;
}
-static method g2(core::bool* x) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = (x ?{core::Object*} 42 : asy::Future::value<core::int*>(42)) as{TypeError} FutureOr<core::int*>*;
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method g3(core::bool* x) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- core::Object* y = x ?{core::Object*} 42 : asy::Future::value<core::int*>(42);
- :return_value = y as{TypeError} FutureOr<core::int*>*;
- break #L3;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+static method g2(core::bool* x) → asy::Future<core::int*>* async /* futureValueType= core::int* */
+ return (x ?{core::Object*} 42 : asy::Future::value<core::int*>(42)) as{TypeError} FutureOr<core::int*>*;
+static method g3(core::bool* x) → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ core::Object* y = x ?{core::Object*} 42 : asy::Future::value<core::int*>(42);
+ return y as{TypeError} FutureOr<core::int*>*;
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.transformed.expect
index 042521a..88f763b 100644
--- a/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_async_conditional_2.dart.weak.transformed.expect
@@ -32,87 +32,14 @@
no-such-method-forwarder method timeout(core::Duration* timeLimit, {covariant-by-class () →* FutureOr<self::MyFuture::T*>* onTimeout = #C1}) → asy::Future<self::MyFuture::T*>*
return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withType(#C9, 0, #C3, core::List::unmodifiable<dynamic>(core::_GrowableList::_literal1<dynamic>(timeLimit)), core::Map::unmodifiable<core::Symbol*, dynamic>(<core::Symbol*, dynamic>{#C10: onTimeout}))){(core::Invocation*) →* dynamic} as{TypeError,ForDynamic} asy::Future<self::MyFuture::T*>*;
}
-static method g1(core::bool* x) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = (x ?{core::Object*} 42 : new self::MyFuture::value<core::int*>(42)) as{TypeError} FutureOr<core::int*>*;
- break #L1;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+static method g1(core::bool* x) → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ return (x ?{core::Object*} 42 : new self::MyFuture::value<core::int*>(42)) as{TypeError} FutureOr<core::int*>*;
}
-static method g2(core::bool* x) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = (x ?{core::Object*} 42 : new self::MyFuture::value<core::int*>(42)) as{TypeError} FutureOr<core::int*>*;
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method g3(core::bool* x) → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- FutureOr<core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- core::Object* y = x ?{core::Object*} 42 : new self::MyFuture::value<dynamic>(42);
- :return_value = y as{TypeError} FutureOr<core::int*>*;
- break #L3;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+static method g2(core::bool* x) → asy::Future<core::int*>* async /* futureValueType= core::int* */
+ return (x ?{core::Object*} 42 : new self::MyFuture::value<core::int*>(42)) as{TypeError} FutureOr<core::int*>*;
+static method g3(core::bool* x) → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ core::Object* y = x ?{core::Object*} 42 : new self::MyFuture::value<dynamic>(42);
+ return y as{TypeError} FutureOr<core::int*>*;
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.transformed.expect
index 4d9373c..78822c8 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.weak.transformed.expect
@@ -44,59 +44,11 @@
new /*@ typeArgs=int* */ Future.value('hi'));
^" in "hi" as{TypeError} FutureOr<core::int*>?)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
static field asy::Future<core::List<core::int*>*>* t2 = self::f.{self::MyFuture::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => core::_GrowableList::_literal1<core::int*>(3)){((dynamic) →* FutureOr<core::List<core::int*>*>*, {onError: core::Function*}) →* self::MyFuture<core::List<core::int*>*>*};
-static method g2() → asy::Future<core::List<core::int*>*>* /* futureValueType= core::List<core::int*>* */ /* originally async */ {
- final asy::_Future<core::List<core::int*>*>* :async_future = new asy::_Future::•<core::List<core::int*>*>();
- core::bool* :is_sync = false;
- core::List<core::int*>? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = core::_GrowableList::_literal1<core::int*>(3);
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+static method g2() → asy::Future<core::List<core::int*>*>* async /* futureValueType= core::List<core::int*>* */ {
+ return core::_GrowableList::_literal1<core::int*>(3);
}
-static method g3() → asy::Future<core::List<core::int*>*>* /* futureValueType= core::List<core::int*>* */ /* originally async */ {
- final asy::_Future<core::List<core::int*>*>* :async_future = new asy::_Future::•<core::List<core::int*>*>();
- core::bool* :is_sync = false;
- FutureOr<core::List<core::int*>*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = asy::Future::value<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(3));
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+static method g3() → asy::Future<core::List<core::int*>*>* async /* futureValueType= core::List<core::int*>* */ {
+ return asy::Future::value<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(3));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.transformed.expect
index b24c57d..e0786f8 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_2.dart.weak.transformed.expect
@@ -35,59 +35,11 @@
static field self::MyFuture<dynamic>* f;
static field asy::Future<core::int*>* t1 = self::f.{self::MyFuture::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* => new self::MyFuture::value<core::int*>("hi")){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* self::MyFuture<core::int*>*};
static field asy::Future<core::List<core::int*>*>* t2 = self::f.{self::MyFuture::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => core::_GrowableList::_literal1<core::int*>(3)){((dynamic) →* FutureOr<core::List<core::int*>*>*, {onError: core::Function*}) →* self::MyFuture<core::List<core::int*>*>*};
-static method g2() → asy::Future<core::List<core::int*>*>* /* futureValueType= core::List<core::int*>* */ /* originally async */ {
- final asy::_Future<core::List<core::int*>*>* :async_future = new asy::_Future::•<core::List<core::int*>*>();
- core::bool* :is_sync = false;
- core::List<core::int*>? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = core::_GrowableList::_literal1<core::int*>(3);
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+static method g2() → asy::Future<core::List<core::int*>*>* async /* futureValueType= core::List<core::int*>* */ {
+ return core::_GrowableList::_literal1<core::int*>(3);
}
-static method g3() → asy::Future<core::List<core::int*>*>* /* futureValueType= core::List<core::int*>* */ /* originally async */ {
- final asy::_Future<core::List<core::int*>*>* :async_future = new asy::_Future::•<core::List<core::int*>*>();
- core::bool* :is_sync = false;
- FutureOr<core::List<core::int*>*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = new self::MyFuture::value<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(3));
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+static method g3() → asy::Future<core::List<core::int*>*>* async /* futureValueType= core::List<core::int*>* */ {
+ return new self::MyFuture::value<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(3));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.transformed.expect
index feef12c..0c3bc84 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.weak.transformed.expect
@@ -44,59 +44,11 @@
new /*@ typeArgs=int* */ Future.value('hi'));
^" in "hi" as{TypeError} FutureOr<core::int*>?)){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
static field asy::Future<core::List<core::int*>*>* t2 = self::f.{asy::Future::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => core::_GrowableList::_literal1<core::int*>(3)){((dynamic) →* FutureOr<core::List<core::int*>*>*, {onError: core::Function*}) →* asy::Future<core::List<core::int*>*>*};
-static method g2() → asy::Future<core::List<core::int*>*>* /* futureValueType= core::List<core::int*>* */ /* originally async */ {
- final asy::_Future<core::List<core::int*>*>* :async_future = new asy::_Future::•<core::List<core::int*>*>();
- core::bool* :is_sync = false;
- core::List<core::int*>? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = core::_GrowableList::_literal1<core::int*>(3);
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+static method g2() → asy::Future<core::List<core::int*>*>* async /* futureValueType= core::List<core::int*>* */ {
+ return core::_GrowableList::_literal1<core::int*>(3);
}
-static method g3() → asy::Future<core::List<core::int*>*>* /* futureValueType= core::List<core::int*>* */ /* originally async */ {
- final asy::_Future<core::List<core::int*>*>* :async_future = new asy::_Future::•<core::List<core::int*>*>();
- core::bool* :is_sync = false;
- FutureOr<core::List<core::int*>*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = asy::Future::value<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(3));
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+static method g3() → asy::Future<core::List<core::int*>*>* async /* futureValueType= core::List<core::int*>* */ {
+ return asy::Future::value<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(3));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.transformed.expect
index 685b7cb..756da4f 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_4.dart.weak.transformed.expect
@@ -35,59 +35,11 @@
static field asy::Future<dynamic>* f;
static field asy::Future<core::int*>* t1 = self::f.{asy::Future::then}<core::int*>((dynamic _) → self::MyFuture<core::int*>* => new self::MyFuture::value<core::int*>("hi")){((dynamic) →* FutureOr<core::int*>*, {onError: core::Function*}) →* asy::Future<core::int*>*};
static field asy::Future<core::List<core::int*>*>* t2 = self::f.{asy::Future::then}<core::List<core::int*>*>((dynamic _) → core::List<core::int*>* => core::_GrowableList::_literal1<core::int*>(3)){((dynamic) →* FutureOr<core::List<core::int*>*>*, {onError: core::Function*}) →* asy::Future<core::List<core::int*>*>*};
-static method g2() → asy::Future<core::List<core::int*>*>* /* futureValueType= core::List<core::int*>* */ /* originally async */ {
- final asy::_Future<core::List<core::int*>*>* :async_future = new asy::_Future::•<core::List<core::int*>*>();
- core::bool* :is_sync = false;
- core::List<core::int*>? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = core::_GrowableList::_literal1<core::int*>(3);
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+static method g2() → asy::Future<core::List<core::int*>*>* async /* futureValueType= core::List<core::int*>* */ {
+ return core::_GrowableList::_literal1<core::int*>(3);
}
-static method g3() → asy::Future<core::List<core::int*>*>* /* futureValueType= core::List<core::int*>* */ /* originally async */ {
- final asy::_Future<core::List<core::int*>*>* :async_future = new asy::_Future::•<core::List<core::int*>*>();
- core::bool* :is_sync = false;
- FutureOr<core::List<core::int*>*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = new self::MyFuture::value<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(3));
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+static method g3() → asy::Future<core::List<core::int*>*>* async /* futureValueType= core::List<core::int*>* */ {
+ return new self::MyFuture::value<core::List<core::int*>*>(core::_GrowableList::_literal1<core::int*>(3));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.weak.transformed.expect
index cb0174e..d92020e 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_future_return.dart.weak.transformed.expect
@@ -2,7 +2,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -21,34 +20,9 @@
abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
}
-static method foo() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- has-declared-initializer asy::Future<core::List<self::A*>*>* f1 = null;
- has-declared-initializer asy::Future<core::List<self::A*>*>* f2 = null;
- [yield] let dynamic #t1 = asy::_awaitHelper(asy::Future::wait<core::List<self::A*>*>(core::_GrowableList::_literal2<asy::Future<core::List<self::A*>*>*>(f1, f2)), :async_op_then, :async_op_error) in null;
- core::List<core::List<self::A*>*>* merged = _in::unsafeCast<core::List<core::List<self::A*>*>>(:result_or_exception);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+static method foo() → dynamic async /* futureValueType= dynamic */ {
+ has-declared-initializer asy::Future<core::List<self::A*>*>* f1 = null;
+ has-declared-initializer asy::Future<core::List<self::A*>*>* f2 = null;
+ core::List<core::List<self::A*>*>* merged = await asy::Future::wait<core::List<self::A*>*>(core::_GrowableList::_literal2<asy::Future<core::List<self::A*>*>*>(f1, f2));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.weak.transformed.expect
index ee68309..9fb7dae 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_generic_method_with_generic_return.dart.weak.transformed.expect
@@ -2,39 +2,13 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
static method id<T extends core::Object* = dynamic>(self::id::T* x) → self::id::T*
return x;
-static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- asy::Future<core::String*>* f;
- [yield] let dynamic #t1 = asy::_awaitHelper(self::id<FutureOr<core::String*>*>(f), :async_op_then, :async_op_error) in null;
- core::String* s = _in::unsafeCast<core::String*>(:result_or_exception);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+static method test() → dynamic async /* futureValueType= dynamic */ {
+ asy::Future<core::String*>* f;
+ core::String* s = await self::id<FutureOr<core::String*>*>(f);
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.weak.transformed.expect
index 7d0a74b..057267c 100644
--- a/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_upwards_generic_methods.dart.weak.transformed.expect
@@ -2,7 +2,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -31,38 +30,12 @@
: super self::A::•()
;
}
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- asy::Future<self::B*>* b = asy::Future::value<self::B*>(new self::B::•());
- asy::Future<self::C*>* c = asy::Future::value<self::C*>(new self::C::•());
- core::List<asy::Future<self::A*>*>* lll = core::_GrowableList::_literal2<asy::Future<self::A*>*>(b, c);
- [yield] let dynamic #t1 = asy::_awaitHelper(asy::Future::wait<self::A*>(lll), :async_op_then, :async_op_error) in null;
- core::List<self::A*>* result = _in::unsafeCast<core::List<self::A*>>(:result_or_exception);
- [yield] let dynamic #t2 = asy::_awaitHelper(asy::Future::wait<self::A*>(core::_GrowableList::_literal2<asy::Future<self::A*>*>(b, c)), :async_op_then, :async_op_error) in null;
- core::List<self::A*>* result2 = _in::unsafeCast<core::List<self::A*>>(:result_or_exception);
- core::List<self::A*>* list = result;
- list = result2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ asy::Future<self::B*>* b = asy::Future::value<self::B*>(new self::B::•());
+ asy::Future<self::C*>* c = asy::Future::value<self::C*>(new self::C::•());
+ core::List<asy::Future<self::A*>*>* lll = core::_GrowableList::_literal2<asy::Future<self::A*>*>(b, c);
+ core::List<self::A*>* result = await asy::Future::wait<self::A*>(lll);
+ core::List<self::A*>* result2 = await asy::Future::wait<self::A*>(core::_GrowableList::_literal2<asy::Future<self::A*>*>(b, c));
+ core::List<self::A*>* list = result;
+ list = result2;
}
diff --git a/pkg/front_end/testcases/inference/generator_closure.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/generator_closure.dart.weak.transformed.expect
index add860f..c703bed 100644
--- a/pkg/front_end/testcases/inference/generator_closure.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/generator_closure.dart.weak.transformed.expect
@@ -7,41 +7,8 @@
static method foo(() →* asy::Stream<core::int*>* values) → void {}
static method main() → void {
- self::foo(() → asy::Stream<core::int*>* /* originally async* */ {
- asy::_AsyncStarStreamController<core::int*>* :controller;
- dynamic :controller_stream;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L1:
- {
- if(:controller.{asy::_AsyncStarStreamController::add}(0){(core::int*) → core::bool})
- return null;
- else
- [yield] null;
- if(:controller.{asy::_AsyncStarStreamController::add}(1){(core::int*) → core::bool})
- return null;
- else
- [yield] null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::int*>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::int*>};
- return :controller_stream;
+ self::foo(() → asy::Stream<core::int*>* async* {
+ yield 0;
+ yield 1;
});
}
diff --git a/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.transformed.expect
index f5a8bb3..c0bf62a 100644
--- a/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_local_function_return_type.dart.weak.transformed.expect
@@ -6,62 +6,13 @@
static method test() → dynamic {
function f0() → core::int*
return 42;
- function f1() → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = 42;
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- }
+ function f1() → asy::Future<core::int*>* async /* futureValueType= core::int* */
+ return 42;
function f2() → core::int* {
return 42;
}
- function f3() → asy::Future<core::int*>* /* futureValueType= core::int* */ /* originally async */ {
- final asy::_Future<core::int*>* :async_future = new asy::_Future::•<core::int*>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = 42;
- break #L2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ function f3() → asy::Future<core::int*>* async /* futureValueType= core::int* */ {
+ return 42;
}
function f4() → core::Iterable<core::int*>* /* originally sync* */ {
function :sync_op_gen() → (core::_SyncIterator<dynamic>*, dynamic, dynamic) →* core::bool* {
@@ -80,38 +31,8 @@
}
return new core::_SyncIterable::•<core::int*>(:sync_op_gen);
}
- function f5() → asy::Stream<core::int*>* /* originally async* */ {
- asy::_AsyncStarStreamController<core::int*>* :controller;
- dynamic :controller_stream;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L3:
- {
- if(:controller.{asy::_AsyncStarStreamController::add}(42){(core::int*) → core::bool})
- return null;
- else
- [yield] null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::int*>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::int*>};
- return :controller_stream;
+ function f5() → asy::Stream<core::int*>* async* {
+ yield 42;
}
function f6() → core::num*
return 42;
diff --git a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.weak.transformed.expect
index 170116d..5cac307 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.weak.transformed.expect
@@ -31,7 +31,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -55,59 +54,23 @@
synthetic constructor •() → self::Bar<self::Bar::T*>*
: super core::Object::•()
;
- method foo(covariant-by-class self::Bar::T* t) → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- dynamic :exception0;
- dynamic :stack_trace0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
+ method foo(covariant-by-class self::Bar::T* t) → dynamic async /* futureValueType= dynamic */ {
+ {
+ self::Bar::T* :stream = t;
+ asy::_StreamIterator<core::String*>* :for-iterator = new asy::_StreamIterator::•<core::String*>(:stream);
+ try
+ while (let dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ core::String* i = :for-iterator.{asy::_StreamIterator::current}{core::String*};
{
- self::Bar::T* :stream = t;
- asy::_StreamIterator<core::String*>* :for-iterator = new asy::_StreamIterator::•<core::String*>(:stream);
- try
- #L2:
- while (true) {
- dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t2 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- core::String* i = :for-iterator.{asy::_StreamIterator::current}{core::String*};
- {
- core::int* x = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:17:44: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
+ core::int* x = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:17:44: Error: A value of type 'String' can't be assigned to a variable of type 'int'.
int x = /*error:INVALID_ASSIGNMENT*/ i;
^" in i as{TypeError} core::int*;
- }
- }
- else
- break #L2;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::String*>?} == null)) {
- [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
}
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::String*>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
}
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -124,60 +87,24 @@
synthetic constructor •() → self::Baz<self::Baz::T*, self::Baz::E*, self::Baz::S*>*
: super core::Object::•()
;
- method foo(covariant-by-class self::Baz::S* t) → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- dynamic :exception0;
- dynamic :stack_trace0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
+ method foo(covariant-by-class self::Baz::S* t) → dynamic async /* futureValueType= dynamic */ {
+ {
+ self::Baz::S* :stream = t;
+ asy::_StreamIterator<self::Baz::T*>* :for-iterator = new asy::_StreamIterator::•<self::Baz::T*>(:stream);
+ try
+ while (let dynamic #t2 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ self::Baz::T* i = :for-iterator.{asy::_StreamIterator::current}{self::Baz::T*};
{
- self::Baz::S* :stream = t;
- asy::_StreamIterator<self::Baz::T*>* :for-iterator = new asy::_StreamIterator::•<self::Baz::T*>(:stream);
- try
- #L4:
- while (true) {
- dynamic #t4 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t5 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- self::Baz::T* i = :for-iterator.{asy::_StreamIterator::current}{self::Baz::T*};
- {
- core::int* x = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:25:44: Error: A value of type 'T' can't be assigned to a variable of type 'int'.
+ core::int* x = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:25:44: Error: A value of type 'T' can't be assigned to a variable of type 'int'.
int x = /*error:INVALID_ASSIGNMENT*/ i;
^" in i as{TypeError} core::int*;
- self::Baz::T* y = i;
- }
- }
- else
- break #L4;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::Baz::T*>?} == null)) {
- [yield] let dynamic #t6 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ self::Baz::T* y = i;
}
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::Baz::T*>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
}
abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf
@@ -241,216 +168,126 @@
abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType
abstract member-signature method listen((self::MyStream::T*) →* void onData, {core::Function* onError = #C1, () →* void onDone = #C1, core::bool* cancelOnError = #C1}) → asy::StreamSubscription<self::MyStream::T*>*; -> asy::Stream::listen
}
-static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- dynamic :exception0;
- dynamic :stack_trace0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- self::MyStream<self::Foo*>* myStream = self::MyStream::•<self::Foo*>();
+static method test() → dynamic async /* futureValueType= dynamic */ {
+ self::MyStream<self::Foo*>* myStream = self::MyStream::•<self::Foo*>();
+ {
+ self::MyStream<self::Foo*>* :stream = myStream;
+ asy::_StreamIterator<self::Foo*>* :for-iterator = new asy::_StreamIterator::•<self::Foo*>(:stream);
+ try
+ while (let dynamic #t3 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ self::Foo* x = :for-iterator.{asy::_StreamIterator::current}{self::Foo*};
{
- self::MyStream<self::Foo*>* :stream = myStream;
- asy::_StreamIterator<self::Foo*>* :for-iterator = new asy::_StreamIterator::•<self::Foo*>(:stream);
- try
- #L6:
- while (true) {
- dynamic #t7 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t8 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- self::Foo* x = :for-iterator.{asy::_StreamIterator::current}{self::Foo*};
- {
- core::String* y = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:38:45: Error: A value of type 'Foo' can't be assigned to a variable of type 'String'.
+ core::String* y = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:38:45: Error: A value of type 'Foo' can't be assigned to a variable of type 'String'.
- 'Foo' is from 'pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart'.
String y = /*error:INVALID_ASSIGNMENT*/ x;
^" in x as{TypeError} core::String*;
- }
- }
- else
- break #L6;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::Foo*>?} == null)) {
- [yield] let dynamic #t9 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
}
+ }
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::Foo*>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ {
+ self::MyStream<self::Foo*>* :stream = myStream;
+ asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
+ try
+ while (let dynamic #t4 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ dynamic x = :for-iterator.{asy::_StreamIterator::current}{dynamic};
{
- self::MyStream<self::Foo*>* :stream = myStream;
- asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
- try
- #L7:
- while (true) {
- dynamic #t10 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t11 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- dynamic x = :for-iterator.{asy::_StreamIterator::current}{dynamic};
- {
- core::String* y = x as{TypeError,ForDynamic} core::String*;
- }
- }
- else
- break #L7;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
- [yield] let dynamic #t12 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ core::String* y = x as{TypeError,ForDynamic} core::String*;
}
+ }
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ {
+ self::MyStream<self::Foo*>* :stream = myStream;
+ asy::_StreamIterator<self::Foo*>* :for-iterator = new asy::_StreamIterator::•<self::Foo*>(:stream);
+ try
+ while (let dynamic #t5 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ final self::Foo* #t6 = :for-iterator.{asy::_StreamIterator::current}{self::Foo*};
{
- self::MyStream<self::Foo*>* :stream = myStream;
- asy::_StreamIterator<self::Foo*>* :for-iterator = new asy::_StreamIterator::•<self::Foo*>(:stream);
- try
- #L8:
- while (true) {
- dynamic #t13 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t14 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- final self::Foo* #t15 = :for-iterator.{asy::_StreamIterator::current}{self::Foo*};
- {
- core::String* x = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:45:21: Error: A value of type 'Foo' can't be assigned to a variable of type 'String'.
+ core::String* x = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:45:21: Error: A value of type 'Foo' can't be assigned to a variable of type 'String'.
- 'Foo' is from 'pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart'.
Try changing the type of the variable.
await for (String x in /*error:FOR_IN_OF_INVALID_ELEMENT_TYPE*/ myStream) {
- ^" in #t15 as{TypeError} core::String*;
- core::String* y = x;
- }
- }
- else
- break #L8;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::Foo*>?} == null)) {
- [yield] let dynamic #t16 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ ^" in #t6 as{TypeError} core::String*;
+ core::String* y = x;
}
- dynamic z;
+ }
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::Foo*>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ dynamic z;
+ {
+ self::MyStream<self::Foo*>* :stream = myStream;
+ asy::_StreamIterator<self::Foo*>* :for-iterator = new asy::_StreamIterator::•<self::Foo*>(:stream);
+ try
+ while (let dynamic #t7 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ final self::Foo* #t8 = :for-iterator.{asy::_StreamIterator::current}{self::Foo*};
{
- self::MyStream<self::Foo*>* :stream = myStream;
- asy::_StreamIterator<self::Foo*>* :for-iterator = new asy::_StreamIterator::•<self::Foo*>(:stream);
- try
- #L9:
- while (true) {
- dynamic #t17 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t18 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- final self::Foo* #t19 = :for-iterator.{asy::_StreamIterator::current}{self::Foo*};
- {
- z = #t19;
- core::String* y = z as{TypeError,ForDynamic} core::String*;
- }
- }
- else
- break #L9;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::Foo*>?} == null)) {
- [yield] let dynamic #t20 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ z = #t8;
+ core::String* y = z as{TypeError,ForDynamic} core::String*;
}
- asy::Stream<dynamic>* stream = myStream;
+ }
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::Foo*>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ asy::Stream<dynamic>* stream = myStream;
+ {
+ asy::Stream<dynamic>* :stream = stream;
+ asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
+ try
+ while (let dynamic #t9 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ final dynamic #t10 = :for-iterator.{asy::_StreamIterator::current}{dynamic};
{
- asy::Stream<dynamic>* :stream = stream;
- asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
- try
- #L10:
- while (true) {
- dynamic #t21 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t22 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- final dynamic #t23 = :for-iterator.{asy::_StreamIterator::current}{dynamic};
- {
- self::Foo* x = #t23 as{TypeError,ForDynamic} self::Foo*;
- self::Foo* y = x;
- }
- }
- else
- break #L10;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
- [yield] let dynamic #t24 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ self::Foo* x = #t10 as{TypeError,ForDynamic} self::Foo*;
+ self::Foo* y = x;
}
- dynamic stream2 = myStream;
+ }
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ dynamic stream2 = myStream;
+ {
+ asy::Stream<dynamic>* :stream = stream2 as{TypeError,ForDynamic} asy::Stream<dynamic>*;
+ asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
+ try
+ while (let dynamic #t11 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ final dynamic #t12 = :for-iterator.{asy::_StreamIterator::current}{dynamic};
{
- asy::Stream<dynamic>* :stream = stream2 as{TypeError,ForDynamic} asy::Stream<dynamic>*;
- asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
- try
- #L11:
- while (true) {
- dynamic #t25 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t26 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- final dynamic #t27 = :for-iterator.{asy::_StreamIterator::current}{dynamic};
- {
- self::Foo* x = #t27 as{TypeError,ForDynamic} self::Foo*;
- self::Foo* y = x;
- }
- }
- else
- break #L11;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
- [yield] let dynamic #t28 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ self::Foo* x = #t12 as{TypeError,ForDynamic} self::Foo*;
+ self::Foo* y = x;
}
- core::Map<core::String*, self::Foo*>* map = <core::String*, self::Foo*>{};
- {
- Never :stream = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:66:76: Error: The type 'Map<String, Foo>' used in the 'for' loop must implement 'Stream<dynamic>'.
+ }
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ core::Map<core::String*, self::Foo*>* map = <core::String*, self::Foo*>{};
+ {
+ Never :stream = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:66:76: Error: The type 'Map<String, Foo>' used in the 'for' loop must implement 'Stream<dynamic>'.
- 'Map' is from 'dart:core'.
- 'Foo' is from 'pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart'.
- 'Stream' is from 'dart:async'.
await for (var /*@ type=dynamic */ x in /*error:FOR_IN_OF_INVALID_TYPE*/ map) {
^" in map as{TypeError} asy::Stream<dynamic>*;
- asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
- try
- #L12:
- while (true) {
- dynamic #t29 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t30 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- dynamic x = :for-iterator.{asy::_StreamIterator::current}{dynamic};
- {
- core::String* y = x as{TypeError,ForDynamic} core::String*;
- }
- }
- else
- break #L12;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
- [yield] let dynamic #t31 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
+ try
+ while (let dynamic #t13 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ dynamic x = :for-iterator.{asy::_StreamIterator::current}{dynamic};
+ {
+ core::String* y = x as{TypeError,ForDynamic} core::String*;
}
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/local_return_and_yield.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/local_return_and_yield.dart.weak.transformed.expect
index 251c281..24b6944 100644
--- a/pkg/front_end/testcases/inference/local_return_and_yield.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/local_return_and_yield.dart.weak.transformed.expect
@@ -10,7 +10,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -19,35 +18,11 @@
function a() → (core::int*) →* core::int* {
return (core::int* x) → core::int* => x;
}
- function b() → asy::Future<(core::int*) →* core::int*>* /* futureValueType= (core::int*) →* core::int* */ /* originally async */ {
- final asy::_Future<(core::int*) →* core::int*>* :async_future = new asy::_Future::•<(core::int*) →* core::int*>();
- core::bool* :is_sync = false;
- FutureOr<(core::int*) →* core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = invalid-expression "pkg/front_end/testcases/inference/local_return_and_yield.dart:19:38: Error: A value of type 'Future<dynamic Function(dynamic)>' can't be assigned to a variable of type 'FutureOr<int Function(int)>'.
+ function b() → asy::Future<(core::int*) →* core::int*>* async /* futureValueType= (core::int*) →* core::int* */ {
+ return invalid-expression "pkg/front_end/testcases/inference/local_return_and_yield.dart:19:38: Error: A value of type 'Future<dynamic Function(dynamic)>' can't be assigned to a variable of type 'FutureOr<int Function(int)>'.
- 'Future' is from 'dart:async'.
return /*@ returnType=dynamic */ (/*@ type=dynamic */ x) => x;
^" in ((dynamic x) → dynamic => x) as{TypeError} FutureOr<(core::int*) →* core::int*>*;
- break #L1;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
}
function c() → core::Iterable<(core::int*) →* core::int*>* /* originally sync* */ {
function :sync_op_gen() → (core::_SyncIterator<dynamic>*, dynamic, dynamic) →* core::bool* {
@@ -83,70 +58,10 @@
}
return new core::_SyncIterable::•<(core::int*) →* core::int*>(:sync_op_gen);
}
- function e() → asy::Stream<(core::int*) →* core::int*>* /* originally async* */ {
- asy::_AsyncStarStreamController<(core::int*) →* core::int*>* :controller;
- dynamic :controller_stream;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L2:
- {
- if(:controller.{asy::_AsyncStarStreamController::add}((core::int* x) → core::int* => x){((core::int*) →* core::int*) → core::bool})
- return null;
- else
- [yield] null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<(core::int*) →* core::int*>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<(core::int*) →* core::int*>};
- return :controller_stream;
+ function e() → asy::Stream<(core::int*) →* core::int*>* async* {
+ yield(core::int* x) → core::int* => x;
}
- function f() → asy::Stream<(core::int*) →* core::int*>* /* originally async* */ {
- asy::_AsyncStarStreamController<(core::int*) →* core::int*>* :controller;
- dynamic :controller_stream;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L3:
- {
- :controller.{asy::_AsyncStarStreamController::addStream}(asy::Stream::fromIterable<(core::int*) →* core::int*>(core::_GrowableList::_literal1<(core::int*) →* core::int*>((core::int* x) → core::int* => x))){(asy::Stream<(core::int*) →* core::int*>) → void};
- [yield] null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- return null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<(core::int*) →* core::int*>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<(core::int*) →* core::int*>};
- return :controller_stream;
+ function f() → asy::Stream<(core::int*) →* core::int*>* async* {
+ yield* asy::Stream::fromIterable<(core::int*) →* core::int*>(core::_GrowableList::_literal1<(core::int*) →* core::int*>((core::int* x) → core::int* => x));
}
}
diff --git a/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.weak.transformed.expect
index 3d5e979..b867e07 100644
--- a/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.weak.transformed.expect
@@ -10,7 +10,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -18,35 +17,11 @@
static method a() → (core::int*) →* core::int* {
return (core::int* x) → core::int* => x;
}
-static method b() → asy::Future<(core::int*) →* core::int*>* /* futureValueType= (core::int*) →* core::int* */ /* originally async */ {
- final asy::_Future<(core::int*) →* core::int*>* :async_future = new asy::_Future::•<(core::int*) →* core::int*>();
- core::bool* :is_sync = false;
- FutureOr<(core::int*) →* core::int*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = invalid-expression "pkg/front_end/testcases/inference/top_level_return_and_yield.dart:18:36: Error: A value of type 'Future<dynamic Function(dynamic)>' can't be assigned to a variable of type 'FutureOr<int Function(int)>'.
+static method b() → asy::Future<(core::int*) →* core::int*>* async /* futureValueType= (core::int*) →* core::int* */ {
+ return invalid-expression "pkg/front_end/testcases/inference/top_level_return_and_yield.dart:18:36: Error: A value of type 'Future<dynamic Function(dynamic)>' can't be assigned to a variable of type 'FutureOr<int Function(int)>'.
- 'Future' is from 'dart:async'.
return /*@ returnType=dynamic */ (/*@ type=dynamic */ x) => x;
^" in ((dynamic x) → dynamic => x) as{TypeError} FutureOr<(core::int*) →* core::int*>*;
- break #L1;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
}
static method c() → core::Iterable<(core::int*) →* core::int*>* /* originally sync* */ {
function :sync_op_gen() → (core::_SyncIterator<dynamic>*, dynamic, dynamic) →* core::bool* {
@@ -82,70 +57,10 @@
}
return new core::_SyncIterable::•<(core::int*) →* core::int*>(:sync_op_gen);
}
-static method e() → asy::Stream<(core::int*) →* core::int*>* /* originally async* */ {
- asy::_AsyncStarStreamController<(core::int*) →* core::int*>* :controller;
- dynamic :controller_stream;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L2:
- {
- if(:controller.{asy::_AsyncStarStreamController::add}((core::int* x) → core::int* => x){((core::int*) →* core::int*) → core::bool})
- return null;
- else
- [yield] null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<(core::int*) →* core::int*>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<(core::int*) →* core::int*>};
- return :controller_stream;
+static method e() → asy::Stream<(core::int*) →* core::int*>* async* {
+ yield(core::int* x) → core::int* => x;
}
-static method f() → asy::Stream<(core::int*) →* core::int*>* /* originally async* */ {
- asy::_AsyncStarStreamController<(core::int*) →* core::int*>* :controller;
- dynamic :controller_stream;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L3:
- {
- :controller.{asy::_AsyncStarStreamController::addStream}(asy::Stream::fromIterable<(core::int*) →* core::int*>(core::_GrowableList::_literal1<(core::int*) →* core::int*>((core::int* x) → core::int* => x))){(asy::Stream<(core::int*) →* core::int*>) → void};
- [yield] null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- return null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<(core::int*) →* core::int*>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<(core::int*) →* core::int*>};
- return :controller_stream;
+static method f() → asy::Stream<(core::int*) →* core::int*>* async* {
+ yield* asy::Stream::fromIterable<(core::int*) →* core::int*>(core::_GrowableList::_literal1<(core::int*) →* core::int*>((core::int* x) → core::int* => x));
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.weak.transformed.expect
index 71aadc6..6ab4fd2 100644
--- a/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.weak.transformed.expect
@@ -23,115 +23,69 @@
// ^
//
import self as self;
-import "dart:async" as asy;
import "dart:core" as core;
-import "dart:_internal" as _in;
+import "dart:async" as asy;
-static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- dynamic :exception0;
- dynamic :stack_trace0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- core::String* s;
- {
- core::Iterator<Never>* :sync-for-iterator = invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:10:17: Error: The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
+static method test() → dynamic async /* futureValueType= dynamic */ {
+ core::String* s;
+ {
+ core::Iterator<Never>* :sync-for-iterator = invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:10:17: Error: The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
- 'Iterable' is from 'dart:core'.
for (int x in s) {}
^" in s as{TypeError} core::Iterable<dynamic>*.{core::Iterable::iterator}{core::Iterator<Never>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- final dynamic #t1 = :sync-for-iterator.{core::Iterator::current}{Never};
- {
- core::int* x = #t1 as{TypeError,ForDynamic} core::int*;
- }
- }
- }
- {
- Never :stream = invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:11:23: Error: The type 'String' used in the 'for' loop must implement 'Stream<dynamic>'.
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ final dynamic #t1 = :sync-for-iterator.{core::Iterator::current}{Never};
+ {
+ core::int* x = #t1 as{TypeError,ForDynamic} core::int*;
+ }
+ }
+ }
+ {
+ Never :stream = invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:11:23: Error: The type 'String' used in the 'for' loop must implement 'Stream<dynamic>'.
- 'Stream' is from 'dart:async'.
await for (int x in s) {}
^" in s as{TypeError} asy::Stream<dynamic>*;
- asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
- try
- #L2:
- while (true) {
- dynamic #t2 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- final dynamic #t4 = :for-iterator.{asy::_StreamIterator::current}{dynamic};
- {
- core::int* x = #t4 as{TypeError,ForDynamic} core::int*;
- }
- }
- else
- break #L2;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
- [yield] let dynamic #t5 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
- }
- core::int* y;
+ asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
+ try
+ while (let dynamic #t2 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ final dynamic #t3 = :for-iterator.{asy::_StreamIterator::current}{dynamic};
{
- core::Iterator<Never>* :sync-for-iterator = invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:13:13: Error: The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
+ core::int* x = #t3 as{TypeError,ForDynamic} core::int*;
+ }
+ }
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ core::int* y;
+ {
+ core::Iterator<Never>* :sync-for-iterator = invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:13:13: Error: The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
- 'Iterable' is from 'dart:core'.
for (y in s) {}
^" in s as{TypeError} core::Iterable<dynamic>*.{core::Iterable::iterator}{core::Iterator<Never>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- final dynamic #t6 = :sync-for-iterator.{core::Iterator::current}{Never};
- {
- y = #t6 as{TypeError,ForDynamic} core::int*;
- }
- }
- }
- {
- Never :stream = invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:14:19: Error: The type 'String' used in the 'for' loop must implement 'Stream<dynamic>'.
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ final dynamic #t4 = :sync-for-iterator.{core::Iterator::current}{Never};
+ {
+ y = #t4 as{TypeError,ForDynamic} core::int*;
+ }
+ }
+ }
+ {
+ Never :stream = invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:14:19: Error: The type 'String' used in the 'for' loop must implement 'Stream<dynamic>'.
- 'Stream' is from 'dart:async'.
await for (y in s) {}
^" in s as{TypeError} asy::Stream<dynamic>*;
- asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
- try
- #L3:
- while (true) {
- dynamic #t7 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t8 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- final dynamic #t9 = :for-iterator.{asy::_StreamIterator::current}{dynamic};
- {
- y = #t9 as{TypeError,ForDynamic} core::int*;
- }
- }
- else
- break #L3;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
- [yield] let dynamic #t10 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ asy::_StreamIterator<dynamic>* :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
+ try
+ while (let dynamic #t5 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ final dynamic #t6 = :for-iterator.{asy::_StreamIterator::current}{dynamic};
+ {
+ y = #t6 as{TypeError,ForDynamic} core::int*;
}
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.weak.transformed.expect b/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.weak.transformed.expect
index c30707e..310c41e 100644
--- a/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.weak.transformed.expect
@@ -17,7 +17,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -43,174 +42,111 @@
}
static method f<T extends core::Object* = dynamic>() → self::f::T*
return null;
-static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- dynamic :exception0;
- dynamic :stack_trace0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
+static method test() → dynamic async /* futureValueType= dynamic */ {
+ core::Iterable<self::A*>* iterable;
+ asy::Stream<self::A*>* stream;
+ self::A* a;
+ self::B* b;
+ core::int* i;
+ {
+ core::Iterator<self::A*>* :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<self::A*>*};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ final self::A* #t1 = :sync-for-iterator.{core::Iterator::current}{self::A*};
{
- core::Iterable<self::A*>* iterable;
- asy::Stream<self::A*>* stream;
- self::A* a;
- self::B* b;
- core::int* i;
+ a = #t1;
+ }
+ }
+ }
+ {
+ asy::Stream<self::A*>* :stream = stream;
+ asy::_StreamIterator<self::A*>* :for-iterator = new asy::_StreamIterator::•<self::A*>(:stream);
+ try
+ while (let dynamic #t2 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ final self::A* #t3 = :for-iterator.{asy::_StreamIterator::current}{self::A*};
{
- core::Iterator<self::A*>* :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<self::A*>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- final self::A* #t1 = :sync-for-iterator.{core::Iterator::current}{self::A*};
- {
- a = #t1;
- }
- }
+ a = #t3;
}
+ }
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::A*>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ {
+ core::Iterator<self::A*>* :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<self::A*>*};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ final self::A* #t4 = :sync-for-iterator.{core::Iterator::current}{self::A*};
+ {
+ b = #t4 as{TypeError} self::B*;
+ }
+ }
+ }
+ {
+ asy::Stream<self::A*>* :stream = stream;
+ asy::_StreamIterator<self::A*>* :for-iterator = new asy::_StreamIterator::•<self::A*>(:stream);
+ try
+ while (let dynamic #t5 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ final self::A* #t6 = :for-iterator.{asy::_StreamIterator::current}{self::A*};
{
- asy::Stream<self::A*>* :stream = stream;
- asy::_StreamIterator<self::A*>* :for-iterator = new asy::_StreamIterator::•<self::A*>(:stream);
- try
- #L2:
- while (true) {
- dynamic #t2 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- final self::A* #t4 = :for-iterator.{asy::_StreamIterator::current}{self::A*};
- {
- a = #t4;
- }
- }
- else
- break #L2;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::A*>?} == null)) {
- [yield] let dynamic #t5 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ b = #t6 as{TypeError} self::B*;
}
- {
- core::Iterator<self::A*>* :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<self::A*>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- final self::A* #t6 = :sync-for-iterator.{core::Iterator::current}{self::A*};
- {
- b = #t6 as{TypeError} self::B*;
- }
- }
- }
- {
- asy::Stream<self::A*>* :stream = stream;
- asy::_StreamIterator<self::A*>* :for-iterator = new asy::_StreamIterator::•<self::A*>(:stream);
- try
- #L3:
- while (true) {
- dynamic #t7 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t8 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- final self::A* #t9 = :for-iterator.{asy::_StreamIterator::current}{self::A*};
- {
- b = #t9 as{TypeError} self::B*;
- }
- }
- else
- break #L3;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::A*>?} == null)) {
- [yield] let dynamic #t10 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
- }
- {
- core::Iterator<self::A*>* :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<self::A*>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- final self::A* #t11 = :sync-for-iterator.{core::Iterator::current}{self::A*};
- {
- i = invalid-expression "pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart:26:10: Error: A value of type 'A' can't be assigned to a variable of type 'int'.
+ }
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::A*>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ {
+ core::Iterator<self::A*>* :sync-for-iterator = iterable.{core::Iterable::iterator}{core::Iterator<self::A*>*};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ final self::A* #t7 = :sync-for-iterator.{core::Iterator::current}{self::A*};
+ {
+ i = invalid-expression "pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart:26:10: Error: A value of type 'A' can't be assigned to a variable of type 'int'.
- 'A' is from 'pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart'.
Try changing the type of the variable.
for (i in iterable) {}
- ^" in #t11 as{TypeError} core::int*;
- }
- }
- }
+ ^" in #t7 as{TypeError} core::int*;
+ }
+ }
+ }
+ {
+ asy::Stream<self::A*>* :stream = stream;
+ asy::_StreamIterator<self::A*>* :for-iterator = new asy::_StreamIterator::•<self::A*>(:stream);
+ try
+ while (let dynamic #t8 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ final self::A* #t9 = :for-iterator.{asy::_StreamIterator::current}{self::A*};
{
- asy::Stream<self::A*>* :stream = stream;
- asy::_StreamIterator<self::A*>* :for-iterator = new asy::_StreamIterator::•<self::A*>(:stream);
- try
- #L4:
- while (true) {
- dynamic #t12 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t13 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- final self::A* #t14 = :for-iterator.{asy::_StreamIterator::current}{self::A*};
- {
- i = invalid-expression "pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart:27:16: Error: A value of type 'A' can't be assigned to a variable of type 'int'.
+ i = invalid-expression "pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart:27:16: Error: A value of type 'A' can't be assigned to a variable of type 'int'.
- 'A' is from 'pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart'.
Try changing the type of the variable.
await for (i in stream) {}
- ^" in #t14 as{TypeError} core::int*;
- }
- }
- else
- break #L4;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::A*>?} == null)) {
- [yield] let dynamic #t15 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
- }
- {
- core::Iterator<self::A*>* :sync-for-iterator = self::f<core::Iterable<self::A*>*>().{core::Iterable::iterator}{core::Iterator<self::A*>*};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- final self::A* #t16 = :sync-for-iterator.{core::Iterator::current}{self::A*};
- {
- a = #t16;
- }
- }
- }
- {
- asy::Stream<self::A*>* :stream = self::f<asy::Stream<self::A*>*>();
- asy::_StreamIterator<self::A*>* :for-iterator = new asy::_StreamIterator::•<self::A*>(:stream);
- try
- #L5:
- while (true) {
- dynamic #t17 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t18 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- final self::A* #t19 = :for-iterator.{asy::_StreamIterator::current}{self::A*};
- {
- a = #t19;
- }
- }
- else
- break #L5;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::A*>?} == null)) {
- [yield] let dynamic #t20 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ ^" in #t9 as{TypeError} core::int*;
}
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::A*>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ {
+ core::Iterator<self::A*>* :sync-for-iterator = self::f<core::Iterable<self::A*>*>().{core::Iterable::iterator}{core::Iterator<self::A*>*};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ final self::A* #t10 = :sync-for-iterator.{core::Iterator::current}{self::A*};
+ {
+ a = #t10;
+ }
}
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ }
+ {
+ asy::Stream<self::A*>* :stream = self::f<asy::Stream<self::A*>*>();
+ asy::_StreamIterator<self::A*>* :for-iterator = new asy::_StreamIterator::•<self::A*>(:stream);
+ try
+ while (let dynamic #t11 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ final self::A* #t12 = :for-iterator.{asy::_StreamIterator::current}{self::A*};
+ {
+ a = #t12;
+ }
+ }
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<self::A*>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/late_lowering/later.dart.strong.transformed.expect b/pkg/front_end/testcases/late_lowering/later.dart.strong.transformed.expect
index 774b14f..87ee63e 100644
--- a/pkg/front_end/testcases/late_lowering/later.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/later.dart.strong.transformed.expect
@@ -136,131 +136,43 @@
#t5.{core::List::add}{Invariant}(i){(core::int) → void};
} =>#t5;
}
-static method hest() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- dynamic :exception0;
- dynamic :stack_trace0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
+static method hest() → dynamic async /* futureValueType= dynamic */ {
+ {
+ asy::Stream<core::String> :stream = asy::Stream::fromIterable<core::String>(core::_GrowableList::_literal1<core::String>("hest"));
+ asy::_StreamIterator<core::String>? :for-iterator = new asy::_StreamIterator::•<core::String>(:stream);
+ try
+ while (let dynamic #t6 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ core::String s = :for-iterator.{asy::_StreamIterator::current}{core::String};
{
- asy::Stream<core::String> :stream = asy::Stream::fromIterable<core::String>(core::_GrowableList::_literal1<core::String>("hest"));
- asy::_StreamIterator<core::String>? :for-iterator = new asy::_StreamIterator::•<core::String>(:stream);
- try
- #L2:
- while (true) {
- dynamic #t6 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t7 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- core::String s = :for-iterator.{asy::_StreamIterator::current}{core::String};
- {
- core::print(s);
- }
- }
- else
- break #L2;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::String>?} == null)) {
- [yield] let dynamic #t8 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ core::print(s);
}
- :return_value = "hest";
- break #L1;
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::String>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ return "hest";
}
-static method fisk() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- lowered has-declared-initializer core::String? #s1;
- function #s1#get() → core::String
- return let final core::String? #t9 = #s1 in #t9 == null ?{core::String} #s1 = invalid-expression "pkg/front_end/testcases/late_lowering/later.dart:40:20: Error: `await` expressions are not supported in late local initializers.
+static method fisk() → dynamic async /* futureValueType= dynamic */ {
+ lowered has-declared-initializer core::String? #s1;
+ function #s1#get() → core::String
+ return let final core::String? #t7 = #s1 in #t7 == null ?{core::String} #s1 = invalid-expression "pkg/front_end/testcases/late_lowering/later.dart:40:20: Error: `await` expressions are not supported in late local initializers.
late String s1 = await hest(); // Error.
- ^^^^^" : #t9{core::String};
- function #s1#set(core::String s1#param) → dynamic
- return #s1 = s1#param;
- lowered has-declared-initializer core::String? #s2;
- function #s2#get() → core::String
- return let final core::String? #t10 = #s2 in #t10 == null ?{core::String} #s2 = "${#C1}${invalid-expression "pkg/front_end/testcases/late_lowering/later.dart:41:30: Error: `await` expressions are not supported in late local initializers.
+ ^^^^^" : #t7{core::String};
+ function #s1#set(core::String s1#param) → dynamic
+ return #s1 = s1#param;
+ lowered has-declared-initializer core::String? #s2;
+ function #s2#get() → core::String
+ return let final core::String? #t8 = #s2 in #t8 == null ?{core::String} #s2 = "${#C1}${invalid-expression "pkg/front_end/testcases/late_lowering/later.dart:41:30: Error: `await` expressions are not supported in late local initializers.
late String s2 = '\${fisk}\${await hest()}\${fisk}'; // Error.
- ^^^^^"}${#C1}" : #t10{core::String};
- function #s2#set(core::String s2#param) → dynamic
- return #s2 = s2#param;
- lowered has-declared-initializer core::Function? #f;
- function #f#get() → core::Function
- return let final core::Function? #t11 = #f in #t11 == null ?{core::Function} #f = () → asy::Future<dynamic> /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- [yield] let dynamic #t12 = asy::_awaitHelper(self::hest(), :async_op_then, :async_op_error) in null;
- :return_value = :result_or_exception;
- break #L4;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- } : #t11{core::Function};
- function #f#set(core::Function f#param) → dynamic
- return #f = f#param;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ ^^^^^"}${#C1}" : #t8{core::String};
+ function #s2#set(core::String s2#param) → dynamic
+ return #s2 = s2#param;
+ lowered has-declared-initializer core::Function? #f;
+ function #f#get() → core::Function
+ return let final core::Function? #t9 = #f in #t9 == null ?{core::Function} #f = () → asy::Future<dynamic> async /* futureValueType= dynamic */ => await self::hest() : #t9{core::Function};
+ function #f#set(core::Function f#param) → dynamic
+ return #f = f#param;
}
static method main() → dynamic {}
@@ -270,4 +182,4 @@
Extra constant evaluation status:
Evaluated: VariableGet @ org-dartlang-testcase:///later.dart:46:18 -> IntConstant(42)
-Extra constant evaluation: evaluated: 201, effectively constant: 1
+Extra constant evaluation: evaluated: 130, effectively constant: 1
diff --git a/pkg/front_end/testcases/late_lowering/later.dart.weak.transformed.expect b/pkg/front_end/testcases/late_lowering/later.dart.weak.transformed.expect
index 97b6f78..d1a0a6c 100644
--- a/pkg/front_end/testcases/late_lowering/later.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/late_lowering/later.dart.weak.transformed.expect
@@ -156,155 +156,67 @@
#t5.{core::List::add}{Invariant}(i){(core::int) → void};
} =>#t5;
}
-static method hest() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- dynamic :exception0;
- dynamic :stack_trace0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
+static method hest() → dynamic async /* futureValueType= dynamic */ {
+ {
+ asy::Stream<core::String> :stream = asy::Stream::fromIterable<core::String>(core::_GrowableList::_literal1<core::String>("hest"));
+ asy::_StreamIterator<core::String>? :for-iterator = new asy::_StreamIterator::•<core::String>(:stream);
+ try
+ while (let dynamic #t6 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ core::String s = :for-iterator.{asy::_StreamIterator::current}{core::String};
{
- asy::Stream<core::String> :stream = asy::Stream::fromIterable<core::String>(core::_GrowableList::_literal1<core::String>("hest"));
- asy::_StreamIterator<core::String>? :for-iterator = new asy::_StreamIterator::•<core::String>(:stream);
- try
- #L2:
- while (true) {
- dynamic #t6 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t7 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- core::String s = :for-iterator.{asy::_StreamIterator::current}{core::String};
- {
- core::print(s);
- }
- }
- else
- break #L2;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::String>?} == null)) {
- [yield] let dynamic #t8 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ core::print(s);
}
- :return_value = "hest";
- break #L1;
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::String>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ return "hest";
}
-static method fisk() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- lowered has-declared-initializer core::String? #s1;
- lowered core::bool #s1#isSet = false;
- function #s1#get() → core::String {
- if(!#s1#isSet) {
- #s1 = invalid-expression "pkg/front_end/testcases/late_lowering/later.dart:40:20: Error: `await` expressions are not supported in late local initializers.
+static method fisk() → dynamic async /* futureValueType= dynamic */ {
+ lowered has-declared-initializer core::String? #s1;
+ lowered core::bool #s1#isSet = false;
+ function #s1#get() → core::String {
+ if(!#s1#isSet) {
+ #s1 = invalid-expression "pkg/front_end/testcases/late_lowering/later.dart:40:20: Error: `await` expressions are not supported in late local initializers.
late String s1 = await hest(); // Error.
^^^^^";
- #s1#isSet = true;
- }
- return #s1{core::String};
- }
- function #s1#set(core::String s1#param) → dynamic {
- #s1#isSet = true;
- return #s1 = s1#param;
- }
- lowered has-declared-initializer core::String? #s2;
- lowered core::bool #s2#isSet = false;
- function #s2#get() → core::String {
- if(!#s2#isSet) {
- #s2 = "${#C1}${invalid-expression "pkg/front_end/testcases/late_lowering/later.dart:41:30: Error: `await` expressions are not supported in late local initializers.
+ #s1#isSet = true;
+ }
+ return #s1{core::String};
+ }
+ function #s1#set(core::String s1#param) → dynamic {
+ #s1#isSet = true;
+ return #s1 = s1#param;
+ }
+ lowered has-declared-initializer core::String? #s2;
+ lowered core::bool #s2#isSet = false;
+ function #s2#get() → core::String {
+ if(!#s2#isSet) {
+ #s2 = "${#C1}${invalid-expression "pkg/front_end/testcases/late_lowering/later.dart:41:30: Error: `await` expressions are not supported in late local initializers.
late String s2 = '\${fisk}\${await hest()}\${fisk}'; // Error.
^^^^^"}${#C1}";
- #s2#isSet = true;
- }
- return #s2{core::String};
- }
- function #s2#set(core::String s2#param) → dynamic {
- #s2#isSet = true;
- return #s2 = s2#param;
- }
- lowered has-declared-initializer core::Function? #f;
- lowered core::bool #f#isSet = false;
- function #f#get() → core::Function {
- if(!#f#isSet) {
- #f = () → asy::Future<dynamic> /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- [yield] let dynamic #t9 = asy::_awaitHelper(self::hest(), :async_op_then, :async_op_error) in null;
- :return_value = :result_or_exception;
- break #L4;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- };
- #f#isSet = true;
- }
- return #f{core::Function};
- }
- function #f#set(core::Function f#param) → dynamic {
- #f#isSet = true;
- return #f = f#param;
- }
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
+ #s2#isSet = true;
}
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
+ return #s2{core::String};
+ }
+ function #s2#set(core::String s2#param) → dynamic {
+ #s2#isSet = true;
+ return #s2 = s2#param;
+ }
+ lowered has-declared-initializer core::Function? #f;
+ lowered core::bool #f#isSet = false;
+ function #f#get() → core::Function {
+ if(!#f#isSet) {
+ #f = () → asy::Future<dynamic> async /* futureValueType= dynamic */ => await self::hest();
+ #f#isSet = true;
}
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ return #f{core::Function};
+ }
+ function #f#set(core::Function f#param) → dynamic {
+ #f#isSet = true;
+ return #f = f#param;
+ }
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.strong.transformed.expect
index 1bb1cc7..564f0b5 100644
--- a/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.strong.transformed.expect
@@ -272,47 +272,22 @@
break #L1;
}
}
- function local() → FutureOr<self::A> /* futureValueType= self::A */ /* originally async */ {
- final asy::_Future<self::A> :async_future = new asy::_Future::•<self::A>();
- core::bool* :is_sync = false;
- FutureOr<self::A>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- if(true) {
- :return_value = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:43:14: Error: A value of type 'B?' can't be returned from an async function with return type 'FutureOr<A>' because 'B?' is nullable and 'FutureOr<A>' isn't.
+ function local() → FutureOr<self::A> async /* futureValueType= self::A */ {
+ if(true) {
+ return invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:43:14: Error: A value of type 'B?' can't be returned from an async function with return type 'FutureOr<A>' because 'B?' is nullable and 'FutureOr<A>' isn't.
- 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
return x; // Error.
^" in let self::B? #t6 = x in #t6 == null ?{self::A} #t6 as{TypeError,ForNonNullableByDefault} self::A : #t6{self::A};
- break #L4;
- }
- else {
- :return_value = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:45:18: Error: A value of type 'Future<B?>' can't be returned from an async function with return type 'FutureOr<A>'.
+ }
+ else {
+ return invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:45:18: Error: A value of type 'Future<B?>' can't be returned from an async function with return type 'FutureOr<A>'.
- 'Future' is from 'dart:async'.
- 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
return new Future<B?>.value(x); // Error.
^" in asy::Future::value<self::B?>(x) as{TypeError,ForNonNullableByDefault} self::A;
- break #L4;
- }
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ }
}
return invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:49:10: Error: A value of type 'B?' can't be returned from a function with return type 'A' because 'B?' is nullable and 'A' isn't.
- 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
@@ -406,45 +381,20 @@
return null; // Error.
^" in let Null #t15 = null in #t15 == null ?{self::A} #t15 as{TypeError,ForNonNullableByDefault} self::A : #t15{self::A};
}
- function local() → FutureOr<self::A> /* futureValueType= self::A */ /* originally async */ {
- final asy::_Future<self::A> :async_future = new asy::_Future::•<self::A>();
- core::bool* :is_sync = false;
- FutureOr<self::A>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- if(true) {
- :return_value = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:77:14: Error: The value 'null' can't be returned from an async function with return type 'FutureOr<A>' because 'FutureOr<A>' is not nullable.
+ function local() → FutureOr<self::A> async /* futureValueType= self::A */ {
+ if(true) {
+ return invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:77:14: Error: The value 'null' can't be returned from an async function with return type 'FutureOr<A>' because 'FutureOr<A>' is not nullable.
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
return null; // Error.
^" in let Null #t16 = null in #t16 == null ?{self::A} #t16 as{TypeError,ForNonNullableByDefault} self::A : #t16{self::A};
- break #L5;
- }
- else {
- :return_value = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:79:18: Error: A value of type 'Future<Null>' can't be returned from an async function with return type 'FutureOr<A>'.
+ }
+ else {
+ return invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:79:18: Error: A value of type 'Future<Null>' can't be returned from an async function with return type 'FutureOr<A>'.
- 'Future' is from 'dart:async'.
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
return new Future<Null>.value(null); // Error.
^" in asy::Future::value<Null>(null) as{TypeError,ForNonNullableByDefault} self::A;
- break #L5;
- }
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ }
}
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.weak.transformed.expect
index 2268408..65746d3 100644
--- a/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/assignability_error_messages.dart.weak.transformed.expect
@@ -272,47 +272,22 @@
break #L1;
}
}
- function local() → FutureOr<self::A> /* futureValueType= self::A */ /* originally async */ {
- final asy::_Future<self::A> :async_future = new asy::_Future::•<self::A>();
- core::bool* :is_sync = false;
- FutureOr<self::A>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- if(true) {
- :return_value = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:43:14: Error: A value of type 'B?' can't be returned from an async function with return type 'FutureOr<A>' because 'B?' is nullable and 'FutureOr<A>' isn't.
+ function local() → FutureOr<self::A> async /* futureValueType= self::A */ {
+ if(true) {
+ return invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:43:14: Error: A value of type 'B?' can't be returned from an async function with return type 'FutureOr<A>' because 'B?' is nullable and 'FutureOr<A>' isn't.
- 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
return x; // Error.
^" in x;
- break #L4;
- }
- else {
- :return_value = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:45:18: Error: A value of type 'Future<B?>' can't be returned from an async function with return type 'FutureOr<A>'.
+ }
+ else {
+ return invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:45:18: Error: A value of type 'Future<B?>' can't be returned from an async function with return type 'FutureOr<A>'.
- 'Future' is from 'dart:async'.
- 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
return new Future<B?>.value(x); // Error.
^" in asy::Future::value<self::B?>(x) as{TypeError,ForNonNullableByDefault} self::A;
- break #L4;
- }
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ }
}
return invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:49:10: Error: A value of type 'B?' can't be returned from a function with return type 'A' because 'B?' is nullable and 'A' isn't.
- 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
@@ -406,45 +381,20 @@
return null; // Error.
^" in null;
}
- function local() → FutureOr<self::A> /* futureValueType= self::A */ /* originally async */ {
- final asy::_Future<self::A> :async_future = new asy::_Future::•<self::A>();
- core::bool* :is_sync = false;
- FutureOr<self::A>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- if(true) {
- :return_value = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:77:14: Error: The value 'null' can't be returned from an async function with return type 'FutureOr<A>' because 'FutureOr<A>' is not nullable.
+ function local() → FutureOr<self::A> async /* futureValueType= self::A */ {
+ if(true) {
+ return invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:77:14: Error: The value 'null' can't be returned from an async function with return type 'FutureOr<A>' because 'FutureOr<A>' is not nullable.
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
return null; // Error.
^" in null;
- break #L5;
- }
- else {
- :return_value = invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:79:18: Error: A value of type 'Future<Null>' can't be returned from an async function with return type 'FutureOr<A>'.
+ }
+ else {
+ return invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:79:18: Error: A value of type 'Future<Null>' can't be returned from an async function with return type 'FutureOr<A>'.
- 'Future' is from 'dart:async'.
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
return new Future<Null>.value(null); // Error.
^" in asy::Future::value<Null>(null) as{TypeError,ForNonNullableByDefault} self::A;
- break #L5;
- }
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ }
}
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.strong.transformed.expect
index 5244f7f..712bc36 100644
--- a/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.strong.transformed.expect
@@ -2,53 +2,26 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
abstract class TestMixin<R extends core::Object? = dynamic, T extends core::Object? = dynamic> extends core::Object /*isMixinDeclaration*/ {
- method test(covariant-by-class asy::Future<self::TestMixin::R%> fetch) → asy::Future<self::TestMixin::T%> /* futureValueType= self::TestMixin::T% */ /* originally async */ {
- final asy::_Future<self::TestMixin::T%> :async_future = new asy::_Future::•<self::TestMixin::T%>();
- core::bool* :is_sync = false;
- FutureOr<self::TestMixin::T%>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(fetch, :async_op_then, :async_op_error) in null;
- final self::TestMixin::R% response = _in::unsafeCast<self::TestMixin::R%>(:result_or_exception);
- self::TestMixin::T% result;
- if(response is{ForNonNullableByDefault} self::Response<dynamic>) {
- result = response{self::TestMixin::R% & self::Response<dynamic> /* '%' & '!' = '!' */}.{self::Response::data}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} self::TestMixin::T%;
- }
- else
- if(response is{ForNonNullableByDefault} self::PagingResponse<dynamic>) {
- result = response{self::TestMixin::R% & self::PagingResponse<dynamic> /* '%' & '!' = '!' */}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>}.{self::PagingResponseData::data}{core::List<dynamic>} as{ForNonNullableByDefault} self::TestMixin::T%;
- }
- else
- if(response is{ForNonNullableByDefault} self::TestMixin::T%) {
- result = response{self::TestMixin::R% & self::TestMixin::T% /* '%' & '%' = '%' */};
- }
- else {
- throw core::Exception::•("Invalid response type");
- }
- :return_value = result;
- break #L1;
+ method test(covariant-by-class asy::Future<self::TestMixin::R%> fetch) → asy::Future<self::TestMixin::T%> async /* futureValueType= self::TestMixin::T% */ {
+ final self::TestMixin::R% response = await fetch;
+ self::TestMixin::T% result;
+ if(response is{ForNonNullableByDefault} self::Response<dynamic>) {
+ result = response{self::TestMixin::R% & self::Response<dynamic> /* '%' & '!' = '!' */}.{self::Response::data}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} self::TestMixin::T%;
+ }
+ else
+ if(response is{ForNonNullableByDefault} self::PagingResponse<dynamic>) {
+ result = response{self::TestMixin::R% & self::PagingResponse<dynamic> /* '%' & '!' = '!' */}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>}.{self::PagingResponseData::data}{core::List<dynamic>} as{ForNonNullableByDefault} self::TestMixin::T%;
+ }
+ else
+ if(response is{ForNonNullableByDefault} self::TestMixin::T%) {
+ result = response{self::TestMixin::R% & self::TestMixin::T% /* '%' & '%' = '%' */};
}
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ else {
+ throw core::Exception::•("Invalid response type");
+ }
+ return result;
}
}
class PagingResponse<T extends core::Object? = dynamic> extends core::Object {
@@ -73,50 +46,24 @@
const synthetic constructor •() → self::_Class1&Object&TestMixin
: super core::Object::•()
;
- method test(covariant-by-class asy::Future<self::Response<core::String>> fetch) → asy::Future<core::String> /* futureValueType= core::String */ /* originally async */ {
- final asy::_Future<core::String> :async_future = new asy::_Future::•<core::String>();
- core::bool* :is_sync = false;
- core::String? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = asy::_awaitHelper(fetch, :async_op_then, :async_op_error) in null;
- final self::Response<core::String> response = _in::unsafeCast<self::Response<core::String>>(:result_or_exception);
- core::String result;
- if(response is{ForNonNullableByDefault} self::Response<dynamic>) {
- result = response{self::Response<core::String>}.{self::Response::data}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::String;
- }
- else
- if(response is{ForNonNullableByDefault} self::PagingResponse<dynamic>) {
- result = response{self::Response<core::String>}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>}.{self::PagingResponseData::data}{core::List<dynamic>} as{ForNonNullableByDefault} core::String;
- }
- else
- if(response is{ForNonNullableByDefault} core::String) {
- result = response{self::Response<core::String>};
- }
- else {
- throw core::Exception::•("Invalid response type");
- }
- :return_value = result;
- break #L2;
+ method test(covariant-by-class asy::Future<self::Response<core::String>> fetch) → asy::Future<core::String> async /* futureValueType= core::String */ {
+ final self::Response<core::String> response = await fetch;
+ core::String result;
+ if(response is{ForNonNullableByDefault} self::Response<dynamic>) {
+ result = response{self::Response<core::String>}.{self::Response::data}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::String;
+ }
+ else
+ if(response is{ForNonNullableByDefault} self::PagingResponse<dynamic>) {
+ result = response{self::Response<core::String>}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>}.{self::PagingResponseData::data}{core::List<dynamic>} as{ForNonNullableByDefault} core::String;
+ }
+ else
+ if(response is{ForNonNullableByDefault} core::String) {
+ result = response{self::Response<core::String>};
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ else {
+ throw core::Exception::•("Invalid response type");
+ }
+ return result;
}
}
class Class1 extends self::_Class1&Object&TestMixin {
@@ -132,50 +79,24 @@
const synthetic constructor •() → self::_Class2&Object&TestMixin
: super core::Object::•()
;
- method test(covariant-by-class asy::Future<self::PagingResponse<core::String>> fetch) → asy::Future<core::String> /* futureValueType= core::String */ /* originally async */ {
- final asy::_Future<core::String> :async_future = new asy::_Future::•<core::String>();
- core::bool* :is_sync = false;
- core::String? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- [yield] let dynamic #t3 = asy::_awaitHelper(fetch, :async_op_then, :async_op_error) in null;
- final self::PagingResponse<core::String> response = _in::unsafeCast<self::PagingResponse<core::String>>(:result_or_exception);
- core::String result;
- if(response is{ForNonNullableByDefault} self::Response<dynamic>) {
- result = response{self::PagingResponse<core::String>}.{self::Response::data}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::String;
- }
- else
- if(response is{ForNonNullableByDefault} self::PagingResponse<dynamic>) {
- result = response{self::PagingResponse<core::String>}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>}.{self::PagingResponseData::data}{core::List<dynamic>} as{ForNonNullableByDefault} core::String;
- }
- else
- if(response is{ForNonNullableByDefault} core::String) {
- result = response{self::PagingResponse<core::String>};
- }
- else {
- throw core::Exception::•("Invalid response type");
- }
- :return_value = result;
- break #L3;
+ method test(covariant-by-class asy::Future<self::PagingResponse<core::String>> fetch) → asy::Future<core::String> async /* futureValueType= core::String */ {
+ final self::PagingResponse<core::String> response = await fetch;
+ core::String result;
+ if(response is{ForNonNullableByDefault} self::Response<dynamic>) {
+ result = response{self::PagingResponse<core::String>}.{self::Response::data}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::String;
+ }
+ else
+ if(response is{ForNonNullableByDefault} self::PagingResponse<dynamic>) {
+ result = response{self::PagingResponse<core::String>}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>}.{self::PagingResponseData::data}{core::List<dynamic>} as{ForNonNullableByDefault} core::String;
+ }
+ else
+ if(response is{ForNonNullableByDefault} core::String) {
+ result = response{self::PagingResponse<core::String>};
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ else {
+ throw core::Exception::•("Invalid response type");
+ }
+ return result;
}
}
class Class2 extends self::_Class2&Object&TestMixin {
diff --git a/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.weak.transformed.expect
index 5244f7f..712bc36 100644
--- a/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/flutter_issue64155.dart.weak.transformed.expect
@@ -2,53 +2,26 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
abstract class TestMixin<R extends core::Object? = dynamic, T extends core::Object? = dynamic> extends core::Object /*isMixinDeclaration*/ {
- method test(covariant-by-class asy::Future<self::TestMixin::R%> fetch) → asy::Future<self::TestMixin::T%> /* futureValueType= self::TestMixin::T% */ /* originally async */ {
- final asy::_Future<self::TestMixin::T%> :async_future = new asy::_Future::•<self::TestMixin::T%>();
- core::bool* :is_sync = false;
- FutureOr<self::TestMixin::T%>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(fetch, :async_op_then, :async_op_error) in null;
- final self::TestMixin::R% response = _in::unsafeCast<self::TestMixin::R%>(:result_or_exception);
- self::TestMixin::T% result;
- if(response is{ForNonNullableByDefault} self::Response<dynamic>) {
- result = response{self::TestMixin::R% & self::Response<dynamic> /* '%' & '!' = '!' */}.{self::Response::data}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} self::TestMixin::T%;
- }
- else
- if(response is{ForNonNullableByDefault} self::PagingResponse<dynamic>) {
- result = response{self::TestMixin::R% & self::PagingResponse<dynamic> /* '%' & '!' = '!' */}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>}.{self::PagingResponseData::data}{core::List<dynamic>} as{ForNonNullableByDefault} self::TestMixin::T%;
- }
- else
- if(response is{ForNonNullableByDefault} self::TestMixin::T%) {
- result = response{self::TestMixin::R% & self::TestMixin::T% /* '%' & '%' = '%' */};
- }
- else {
- throw core::Exception::•("Invalid response type");
- }
- :return_value = result;
- break #L1;
+ method test(covariant-by-class asy::Future<self::TestMixin::R%> fetch) → asy::Future<self::TestMixin::T%> async /* futureValueType= self::TestMixin::T% */ {
+ final self::TestMixin::R% response = await fetch;
+ self::TestMixin::T% result;
+ if(response is{ForNonNullableByDefault} self::Response<dynamic>) {
+ result = response{self::TestMixin::R% & self::Response<dynamic> /* '%' & '!' = '!' */}.{self::Response::data}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} self::TestMixin::T%;
+ }
+ else
+ if(response is{ForNonNullableByDefault} self::PagingResponse<dynamic>) {
+ result = response{self::TestMixin::R% & self::PagingResponse<dynamic> /* '%' & '!' = '!' */}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>}.{self::PagingResponseData::data}{core::List<dynamic>} as{ForNonNullableByDefault} self::TestMixin::T%;
+ }
+ else
+ if(response is{ForNonNullableByDefault} self::TestMixin::T%) {
+ result = response{self::TestMixin::R% & self::TestMixin::T% /* '%' & '%' = '%' */};
}
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ else {
+ throw core::Exception::•("Invalid response type");
+ }
+ return result;
}
}
class PagingResponse<T extends core::Object? = dynamic> extends core::Object {
@@ -73,50 +46,24 @@
const synthetic constructor •() → self::_Class1&Object&TestMixin
: super core::Object::•()
;
- method test(covariant-by-class asy::Future<self::Response<core::String>> fetch) → asy::Future<core::String> /* futureValueType= core::String */ /* originally async */ {
- final asy::_Future<core::String> :async_future = new asy::_Future::•<core::String>();
- core::bool* :is_sync = false;
- core::String? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = asy::_awaitHelper(fetch, :async_op_then, :async_op_error) in null;
- final self::Response<core::String> response = _in::unsafeCast<self::Response<core::String>>(:result_or_exception);
- core::String result;
- if(response is{ForNonNullableByDefault} self::Response<dynamic>) {
- result = response{self::Response<core::String>}.{self::Response::data}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::String;
- }
- else
- if(response is{ForNonNullableByDefault} self::PagingResponse<dynamic>) {
- result = response{self::Response<core::String>}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>}.{self::PagingResponseData::data}{core::List<dynamic>} as{ForNonNullableByDefault} core::String;
- }
- else
- if(response is{ForNonNullableByDefault} core::String) {
- result = response{self::Response<core::String>};
- }
- else {
- throw core::Exception::•("Invalid response type");
- }
- :return_value = result;
- break #L2;
+ method test(covariant-by-class asy::Future<self::Response<core::String>> fetch) → asy::Future<core::String> async /* futureValueType= core::String */ {
+ final self::Response<core::String> response = await fetch;
+ core::String result;
+ if(response is{ForNonNullableByDefault} self::Response<dynamic>) {
+ result = response{self::Response<core::String>}.{self::Response::data}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::String;
+ }
+ else
+ if(response is{ForNonNullableByDefault} self::PagingResponse<dynamic>) {
+ result = response{self::Response<core::String>}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>}.{self::PagingResponseData::data}{core::List<dynamic>} as{ForNonNullableByDefault} core::String;
+ }
+ else
+ if(response is{ForNonNullableByDefault} core::String) {
+ result = response{self::Response<core::String>};
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ else {
+ throw core::Exception::•("Invalid response type");
+ }
+ return result;
}
}
class Class1 extends self::_Class1&Object&TestMixin {
@@ -132,50 +79,24 @@
const synthetic constructor •() → self::_Class2&Object&TestMixin
: super core::Object::•()
;
- method test(covariant-by-class asy::Future<self::PagingResponse<core::String>> fetch) → asy::Future<core::String> /* futureValueType= core::String */ /* originally async */ {
- final asy::_Future<core::String> :async_future = new asy::_Future::•<core::String>();
- core::bool* :is_sync = false;
- core::String? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- [yield] let dynamic #t3 = asy::_awaitHelper(fetch, :async_op_then, :async_op_error) in null;
- final self::PagingResponse<core::String> response = _in::unsafeCast<self::PagingResponse<core::String>>(:result_or_exception);
- core::String result;
- if(response is{ForNonNullableByDefault} self::Response<dynamic>) {
- result = response{self::PagingResponse<core::String>}.{self::Response::data}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::String;
- }
- else
- if(response is{ForNonNullableByDefault} self::PagingResponse<dynamic>) {
- result = response{self::PagingResponse<core::String>}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>}.{self::PagingResponseData::data}{core::List<dynamic>} as{ForNonNullableByDefault} core::String;
- }
- else
- if(response is{ForNonNullableByDefault} core::String) {
- result = response{self::PagingResponse<core::String>};
- }
- else {
- throw core::Exception::•("Invalid response type");
- }
- :return_value = result;
- break #L3;
+ method test(covariant-by-class asy::Future<self::PagingResponse<core::String>> fetch) → asy::Future<core::String> async /* futureValueType= core::String */ {
+ final self::PagingResponse<core::String> response = await fetch;
+ core::String result;
+ if(response is{ForNonNullableByDefault} self::Response<dynamic>) {
+ result = response{self::PagingResponse<core::String>}.{self::Response::data}{dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::String;
+ }
+ else
+ if(response is{ForNonNullableByDefault} self::PagingResponse<dynamic>) {
+ result = response{self::PagingResponse<core::String>}.{self::PagingResponse::data}{self::PagingResponseData<dynamic>}.{self::PagingResponseData::data}{core::List<dynamic>} as{ForNonNullableByDefault} core::String;
+ }
+ else
+ if(response is{ForNonNullableByDefault} core::String) {
+ result = response{self::PagingResponse<core::String>};
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ else {
+ throw core::Exception::•("Invalid response type");
+ }
+ return result;
}
}
class Class2 extends self::_Class2&Object&TestMixin {
diff --git a/pkg/front_end/testcases/nnbd/issue41108.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41108.dart.strong.transformed.expect
index b0a1eca..bae87ac 100644
--- a/pkg/front_end/testcases/nnbd/issue41108.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41108.dart.strong.transformed.expect
@@ -8,40 +8,14 @@
// ^
//
import self as self;
-import "dart:async" as asy;
import "dart:core" as core;
-import "dart:_internal" as _in;
+import "dart:async" as asy;
-static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(self::l(), :async_op_then, :async_op_error) in null;
- core::List<dynamic> y = invalid-expression "pkg/front_end/testcases/nnbd/issue41108.dart:6:12: Error: A value of type 'List<dynamic>?' can't be assigned to a variable of type 'List<dynamic>' because 'List<dynamic>?' is nullable and 'List<dynamic>' isn't.
+static method test() → dynamic async /* futureValueType= dynamic */ {
+ core::List<dynamic> y = invalid-expression "pkg/front_end/testcases/nnbd/issue41108.dart:6:12: Error: A value of type 'List<dynamic>?' can't be assigned to a variable of type 'List<dynamic>' because 'List<dynamic>?' is nullable and 'List<dynamic>' isn't.
- 'List' is from 'dart:core'.
List y = await l(); // should be a List?
- ^" in let core::List<dynamic>? #t2 = _in::unsafeCast<core::List<dynamic>?>(:result_or_exception) in #t2 == null ?{core::List<dynamic>} #t2 as{TypeError,ForNonNullableByDefault} core::List<dynamic> : #t2{core::List<dynamic>};
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ ^" in let core::List<dynamic>? #t1 = await self::l() in #t1 == null ?{core::List<dynamic>} #t1 as{TypeError,ForNonNullableByDefault} core::List<dynamic> : #t1{core::List<dynamic>};
}
static method l() → asy::Future<core::List<dynamic>>?
return null;
diff --git a/pkg/front_end/testcases/nnbd/issue41108.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41108.dart.weak.transformed.expect
index af4fa89..a7bd501 100644
--- a/pkg/front_end/testcases/nnbd/issue41108.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41108.dart.weak.transformed.expect
@@ -8,40 +8,14 @@
// ^
//
import self as self;
-import "dart:async" as asy;
import "dart:core" as core;
-import "dart:_internal" as _in;
+import "dart:async" as asy;
-static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(self::l(), :async_op_then, :async_op_error) in null;
- core::List<dynamic> y = invalid-expression "pkg/front_end/testcases/nnbd/issue41108.dart:6:12: Error: A value of type 'List<dynamic>?' can't be assigned to a variable of type 'List<dynamic>' because 'List<dynamic>?' is nullable and 'List<dynamic>' isn't.
+static method test() → dynamic async /* futureValueType= dynamic */ {
+ core::List<dynamic> y = invalid-expression "pkg/front_end/testcases/nnbd/issue41108.dart:6:12: Error: A value of type 'List<dynamic>?' can't be assigned to a variable of type 'List<dynamic>' because 'List<dynamic>?' is nullable and 'List<dynamic>' isn't.
- 'List' is from 'dart:core'.
List y = await l(); // should be a List?
- ^" in _in::unsafeCast<core::List<dynamic>?>(:result_or_exception);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ ^" in await self::l();
}
static method l() → asy::Future<core::List<dynamic>>?
return null;
diff --git a/pkg/front_end/testcases/nnbd/issue41114.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41114.dart.strong.transformed.expect
index b91c2a7..d11dc27 100644
--- a/pkg/front_end/testcases/nnbd/issue41114.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41114.dart.strong.transformed.expect
@@ -1,34 +1,10 @@
library /*isNonNullableByDefault*/;
import self as self;
-import "dart:async" as asy;
import "dart:core" as core;
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- core::List<core::String>? a = core::_GrowableList::•<core::String>(0);
- core::Iterable<core::String>? b = let final core::List<core::String>? #t1 = a in #t1 == null ?{core::Iterable<core::String>?} null : #t1{core::List<core::String>}.{core::Iterable::map}<core::String>((core::String e) → core::String => e){((core::String) → core::String) → core::Iterable<core::String>};
- core::Iterable<core::String>? i = let final core::Iterable<core::String>? #t2 = b in #t2 == null ?{core::Iterable<core::String>?} a : #t2{core::Iterable<core::String>};
- core::print(i);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ core::List<core::String>? a = core::_GrowableList::•<core::String>(0);
+ core::Iterable<core::String>? b = let final core::List<core::String>? #t1 = a in #t1 == null ?{core::Iterable<core::String>?} null : #t1{core::List<core::String>}.{core::Iterable::map}<core::String>((core::String e) → core::String => e){((core::String) → core::String) → core::Iterable<core::String>};
+ core::Iterable<core::String>? i = let final core::Iterable<core::String>? #t2 = b in #t2 == null ?{core::Iterable<core::String>?} a : #t2{core::Iterable<core::String>};
+ core::print(i);
}
diff --git a/pkg/front_end/testcases/nnbd/issue41114.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41114.dart.weak.transformed.expect
index b91c2a7..d11dc27 100644
--- a/pkg/front_end/testcases/nnbd/issue41114.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41114.dart.weak.transformed.expect
@@ -1,34 +1,10 @@
library /*isNonNullableByDefault*/;
import self as self;
-import "dart:async" as asy;
import "dart:core" as core;
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- core::List<core::String>? a = core::_GrowableList::•<core::String>(0);
- core::Iterable<core::String>? b = let final core::List<core::String>? #t1 = a in #t1 == null ?{core::Iterable<core::String>?} null : #t1{core::List<core::String>}.{core::Iterable::map}<core::String>((core::String e) → core::String => e){((core::String) → core::String) → core::Iterable<core::String>};
- core::Iterable<core::String>? i = let final core::Iterable<core::String>? #t2 = b in #t2 == null ?{core::Iterable<core::String>?} a : #t2{core::Iterable<core::String>};
- core::print(i);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ core::List<core::String>? a = core::_GrowableList::•<core::String>(0);
+ core::Iterable<core::String>? b = let final core::List<core::String>? #t1 = a in #t1 == null ?{core::Iterable<core::String>?} null : #t1{core::List<core::String>}.{core::Iterable::map}<core::String>((core::String e) → core::String => e){((core::String) → core::String) → core::Iterable<core::String>};
+ core::Iterable<core::String>? i = let final core::Iterable<core::String>? #t2 = b in #t2 == null ?{core::Iterable<core::String>?} a : #t2{core::Iterable<core::String>};
+ core::print(i);
}
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 38b54a6..fad7dab 100644
--- a/pkg/front_end/testcases/nnbd/issue41156.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41156.dart.strong.transformed.expect
@@ -55,367 +55,100 @@
(core::int) → core::String x6 = (core::int v) → Never {
return self::throwing();
};
- (core::int) → asy::Future<core::String> y1 = (core::int v) → asy::Future<Never> /* futureValueType= Never */ /* originally async */ {
- final asy::_Future<Never> :async_future = new asy::_Future::•<Never>();
- core::bool* :is_sync = false;
- FutureOr<Never>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = throw v;
- break #L1;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ (core::int) → asy::Future<core::String> y1 = (core::int v) → asy::Future<Never> async /* futureValueType= Never */ => throw v;
+ (core::int) → asy::Future<core::String> y2 = (core::int v) → asy::Future<Never> async /* futureValueType= Never */ {
+ throw v;
};
- (core::int) → asy::Future<core::String> y2 = (core::int v) → asy::Future<Never> /* futureValueType= Never */ /* originally async */ {
- final asy::_Future<Never> :async_future = new asy::_Future::•<Never>();
- core::bool* :is_sync = false;
- Never? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- throw v;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ (core::int) → asy::Future<core::String> y3 = (core::int v) → asy::Future<Never> async /* futureValueType= Never */ {
+ return throw v;
};
- (core::int) → asy::Future<core::String> y3 = (core::int v) → asy::Future<Never> /* futureValueType= Never */ /* originally async */ {
- final asy::_Future<Never> :async_future = new asy::_Future::•<Never>();
- core::bool* :is_sync = false;
- FutureOr<Never>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- :return_value = throw v;
- break #L3;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ (core::int) → asy::Future<core::String> y4 = (core::int v) → asy::Future<Never> async /* futureValueType= Never */ => self::throwing();
+ (core::int) → asy::Future<core::String> y5 = (core::int v) → asy::Future<Never> async /* futureValueType= Never */ {
+ self::throwing();
};
- (core::int) → asy::Future<core::String> y4 = (core::int v) → asy::Future<Never> /* futureValueType= Never */ /* originally async */ {
- final asy::_Future<Never> :async_future = new asy::_Future::•<Never>();
- core::bool* :is_sync = false;
- FutureOr<Never>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- :return_value = self::throwing();
- break #L4;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- };
- (core::int) → asy::Future<core::String> y5 = (core::int v) → asy::Future<Never> /* futureValueType= Never */ /* originally async */ {
- final asy::_Future<Never> :async_future = new asy::_Future::•<Never>();
- core::bool* :is_sync = false;
- Never? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- self::throwing();
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- };
- (core::int) → asy::Future<core::String> y6 = (core::int v) → asy::Future<Never> /* futureValueType= Never */ /* originally async */ {
- final asy::_Future<Never> :async_future = new asy::_Future::•<Never>();
- core::bool* :is_sync = false;
- FutureOr<Never>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L6:
- {
- :return_value = self::throwing();
- break #L6;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ (core::int) → asy::Future<core::String> y6 = (core::int v) → asy::Future<Never> async /* futureValueType= Never */ {
+ return self::throwing();
};
}
-static method errors() → void /* futureValueType= void */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
+static method errors() → void async /* futureValueType= void */ {
+ (core::int) → core::String x2 = (core::int v) → core::String {
try {
- #L7:
- {
- (core::int) → core::String x2 = (core::int v) → core::String {
- try {
- throw v;
- }
- on core::Object catch(final core::Object _) {
- }
- return 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.
+ throw v;
+ }
+ on core::Object catch(final core::Object _) {
+ }
+ return 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 */ {
^" in null;
- };
- (core::int) → core::String x3 = (core::int v) → core::String {
- try {
- return throw v;
- }
- on core::Object catch(final core::Object _) {
- }
- return invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:44:29: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
+ };
+ (core::int) → core::String x3 = (core::int v) → core::String {
+ try {
+ return throw v;
+ }
+ on core::Object catch(final core::Object _) {
+ }
+ return invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:44:29: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
String Function(int) x3 = (int v) /* error */ {
^" in null;
- };
- (core::int) → core::String x5 = (core::int v) → core::String {
- try {
- self::throwing();
- }
- on core::Object catch(final core::Object _) {
- }
- return 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.
+ };
+ (core::int) → core::String x5 = (core::int v) → core::String {
+ try {
+ self::throwing();
+ }
+ on core::Object catch(final core::Object _) {
+ }
+ return 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 */ {
^" in null;
- };
- (core::int) → core::String x6 = (core::int v) → core::String {
- try {
- return self::throwing();
- }
- on core::Object catch(final core::Object _) {
- }
- return invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:54:29: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
+ };
+ (core::int) → core::String x6 = (core::int v) → core::String {
+ try {
+ return self::throwing();
+ }
+ on core::Object catch(final core::Object _) {
+ }
+ return invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:54:29: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
String Function(int) x6 = (int v) /* error */ {
^" in null;
- };
- (core::int) → asy::Future<core::String> y2 = (core::int v) → asy::Future<core::String> /* futureValueType= core::String */ /* originally async */ {
- final asy::_Future<core::String> :async_future = new asy::_Future::•<core::String>();
- core::bool* :is_sync = false;
- FutureOr<core::String>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L8:
- {
- try {
- throw v;
- }
- on core::Object catch(final core::Object _) {
- }
- :return_value = 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.
+ };
+ (core::int) → asy::Future<core::String> y2 = (core::int v) → asy::Future<core::String> async /* futureValueType= core::String */ {
+ try {
+ throw v;
+ }
+ on core::Object catch(final core::Object _) {
+ }
+ return 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 */ {
^" in null;
- break #L8;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- };
- (core::int) → asy::Future<core::String> y3 = (core::int v) → asy::Future<core::String> /* futureValueType= core::String */ /* originally async */ {
- final asy::_Future<core::String> :async_future = new asy::_Future::•<core::String>();
- core::bool* :is_sync = false;
- FutureOr<core::String>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L9:
- {
- try {
- :return_value = throw v;
- break #L9;
- }
- on core::Object catch(final core::Object _) {
- }
- :return_value = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:64:37: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
+ };
+ (core::int) → asy::Future<core::String> y3 = (core::int v) → asy::Future<core::String> async /* futureValueType= core::String */ {
+ try {
+ return throw v;
+ }
+ on core::Object catch(final core::Object _) {
+ }
+ return invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:64:37: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
Future<String> Function(int) y3 = (int v) async /* error */ {
^" in null;
- break #L9;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- };
- (core::int) → asy::Future<core::String> y5 = (core::int v) → asy::Future<core::String> /* futureValueType= core::String */ /* originally async */ {
- final asy::_Future<core::String> :async_future = new asy::_Future::•<core::String>();
- core::bool* :is_sync = false;
- FutureOr<core::String>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L10:
- {
- try {
- self::throwing();
- }
- on core::Object catch(final core::Object _) {
- }
- :return_value = 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.
+ };
+ (core::int) → asy::Future<core::String> y5 = (core::int v) → asy::Future<core::String> async /* futureValueType= core::String */ {
+ try {
+ self::throwing();
+ }
+ on core::Object catch(final core::Object _) {
+ }
+ return 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 */ {
^" in null;
- break #L10;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- };
- (core::int) → asy::Future<core::String> y6 = (core::int v) → asy::Future<core::String> /* futureValueType= core::String */ /* originally async */ {
- final asy::_Future<core::String> :async_future = new asy::_Future::•<core::String>();
- core::bool* :is_sync = false;
- FutureOr<core::String>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L11:
- {
- try {
- :return_value = self::throwing();
- break #L11;
- }
- on core::Object catch(final core::Object _) {
- }
- :return_value = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:74:37: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
+ };
+ (core::int) → asy::Future<core::String> y6 = (core::int v) → asy::Future<core::String> async /* futureValueType= core::String */ {
+ try {
+ return self::throwing();
+ }
+ on core::Object catch(final core::Object _) {
+ }
+ return invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:74:37: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
Future<String> Function(int) y6 = (int v) async /* error */ {
^" in null;
- break #L11;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- };
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ };
}
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 c6419e0..f8ca0c2 100644
--- a/pkg/front_end/testcases/nnbd/issue41156.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41156.dart.weak.transformed.expect
@@ -56,367 +56,100 @@
(core::int) → core::String x6 = (core::int v) → Never {
return let final Never #t3 = self::throwing() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
};
- (core::int) → asy::Future<core::String> y1 = (core::int v) → asy::Future<Never> /* futureValueType= Never */ /* originally async */ {
- final asy::_Future<Never> :async_future = new asy::_Future::•<Never>();
- core::bool* :is_sync = false;
- FutureOr<Never>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = throw v;
- break #L1;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ (core::int) → asy::Future<core::String> y1 = (core::int v) → asy::Future<Never> async /* futureValueType= Never */ => throw v;
+ (core::int) → asy::Future<core::String> y2 = (core::int v) → asy::Future<Never> async /* futureValueType= Never */ {
+ throw v;
};
- (core::int) → asy::Future<core::String> y2 = (core::int v) → asy::Future<Never> /* futureValueType= Never */ /* originally async */ {
- final asy::_Future<Never> :async_future = new asy::_Future::•<Never>();
- core::bool* :is_sync = false;
- Never? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- throw v;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ (core::int) → asy::Future<core::String> y3 = (core::int v) → asy::Future<Never> async /* futureValueType= Never */ {
+ return throw v;
};
- (core::int) → asy::Future<core::String> y3 = (core::int v) → asy::Future<Never> /* futureValueType= Never */ /* originally async */ {
- final asy::_Future<Never> :async_future = new asy::_Future::•<Never>();
- core::bool* :is_sync = false;
- FutureOr<Never>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- :return_value = throw v;
- break #L3;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ (core::int) → asy::Future<core::String> y4 = (core::int v) → asy::Future<Never> async /* futureValueType= Never */ => let final Never #t4 = self::throwing() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+ (core::int) → asy::Future<core::String> y5 = (core::int v) → asy::Future<Never> async /* futureValueType= Never */ {
+ let final Never #t5 = self::throwing() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
};
- (core::int) → asy::Future<core::String> y4 = (core::int v) → asy::Future<Never> /* futureValueType= Never */ /* originally async */ {
- final asy::_Future<Never> :async_future = new asy::_Future::•<Never>();
- core::bool* :is_sync = false;
- FutureOr<Never>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- :return_value = let final Never #t4 = self::throwing() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
- break #L4;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- };
- (core::int) → asy::Future<core::String> y5 = (core::int v) → asy::Future<Never> /* futureValueType= Never */ /* originally async */ {
- final asy::_Future<Never> :async_future = new asy::_Future::•<Never>();
- core::bool* :is_sync = false;
- Never? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- let final Never #t5 = self::throwing() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- };
- (core::int) → asy::Future<core::String> y6 = (core::int v) → asy::Future<Never> /* futureValueType= Never */ /* originally async */ {
- final asy::_Future<Never> :async_future = new asy::_Future::•<Never>();
- core::bool* :is_sync = false;
- FutureOr<Never>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L6:
- {
- :return_value = let final Never #t6 = self::throwing() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
- break #L6;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ (core::int) → asy::Future<core::String> y6 = (core::int v) → asy::Future<Never> async /* futureValueType= Never */ {
+ return let final Never #t6 = self::throwing() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
};
}
-static method errors() → void /* futureValueType= void */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
+static method errors() → void async /* futureValueType= void */ {
+ (core::int) → core::String x2 = (core::int v) → core::String {
try {
- #L7:
- {
- (core::int) → core::String x2 = (core::int v) → core::String {
- try {
- throw v;
- }
- on core::Object catch(final core::Object _) {
- }
- return 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.
+ throw v;
+ }
+ on core::Object catch(final core::Object _) {
+ }
+ return 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 */ {
^" in null;
- };
- (core::int) → core::String x3 = (core::int v) → core::String {
- try {
- return throw v;
- }
- on core::Object catch(final core::Object _) {
- }
- return invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:44:29: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
+ };
+ (core::int) → core::String x3 = (core::int v) → core::String {
+ try {
+ return throw v;
+ }
+ on core::Object catch(final core::Object _) {
+ }
+ return invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:44:29: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
String Function(int) x3 = (int v) /* error */ {
^" in null;
- };
- (core::int) → core::String x5 = (core::int v) → core::String {
- try {
- let final Never #t7 = self::throwing() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
- }
- on core::Object catch(final core::Object _) {
- }
- return 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.
+ };
+ (core::int) → core::String x5 = (core::int v) → core::String {
+ try {
+ let final Never #t7 = self::throwing() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+ }
+ on core::Object catch(final core::Object _) {
+ }
+ return 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 */ {
^" in null;
- };
- (core::int) → core::String x6 = (core::int v) → core::String {
- try {
- return let final Never #t8 = self::throwing() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
- }
- on core::Object catch(final core::Object _) {
- }
- return invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:54:29: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
+ };
+ (core::int) → core::String x6 = (core::int v) → core::String {
+ try {
+ return let final Never #t8 = self::throwing() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+ }
+ on core::Object catch(final core::Object _) {
+ }
+ return invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:54:29: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
String Function(int) x6 = (int v) /* error */ {
^" in null;
- };
- (core::int) → asy::Future<core::String> y2 = (core::int v) → asy::Future<core::String> /* futureValueType= core::String */ /* originally async */ {
- final asy::_Future<core::String> :async_future = new asy::_Future::•<core::String>();
- core::bool* :is_sync = false;
- FutureOr<core::String>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L8:
- {
- try {
- throw v;
- }
- on core::Object catch(final core::Object _) {
- }
- :return_value = 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.
+ };
+ (core::int) → asy::Future<core::String> y2 = (core::int v) → asy::Future<core::String> async /* futureValueType= core::String */ {
+ try {
+ throw v;
+ }
+ on core::Object catch(final core::Object _) {
+ }
+ return 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 */ {
^" in null;
- break #L8;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- };
- (core::int) → asy::Future<core::String> y3 = (core::int v) → asy::Future<core::String> /* futureValueType= core::String */ /* originally async */ {
- final asy::_Future<core::String> :async_future = new asy::_Future::•<core::String>();
- core::bool* :is_sync = false;
- FutureOr<core::String>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L9:
- {
- try {
- :return_value = throw v;
- break #L9;
- }
- on core::Object catch(final core::Object _) {
- }
- :return_value = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:64:37: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
+ };
+ (core::int) → asy::Future<core::String> y3 = (core::int v) → asy::Future<core::String> async /* futureValueType= core::String */ {
+ try {
+ return throw v;
+ }
+ on core::Object catch(final core::Object _) {
+ }
+ return invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:64:37: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
Future<String> Function(int) y3 = (int v) async /* error */ {
^" in null;
- break #L9;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- };
- (core::int) → asy::Future<core::String> y5 = (core::int v) → asy::Future<core::String> /* futureValueType= core::String */ /* originally async */ {
- final asy::_Future<core::String> :async_future = new asy::_Future::•<core::String>();
- core::bool* :is_sync = false;
- FutureOr<core::String>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L10:
- {
- try {
- let final Never #t9 = self::throwing() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
- }
- on core::Object catch(final core::Object _) {
- }
- :return_value = 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.
+ };
+ (core::int) → asy::Future<core::String> y5 = (core::int v) → asy::Future<core::String> async /* futureValueType= core::String */ {
+ try {
+ let final Never #t9 = self::throwing() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+ }
+ on core::Object catch(final core::Object _) {
+ }
+ return 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 */ {
^" in null;
- break #L10;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- };
- (core::int) → asy::Future<core::String> y6 = (core::int v) → asy::Future<core::String> /* futureValueType= core::String */ /* originally async */ {
- final asy::_Future<core::String> :async_future = new asy::_Future::•<core::String>();
- core::bool* :is_sync = false;
- FutureOr<core::String>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L11:
- {
- try {
- :return_value = let final Never #t10 = self::throwing() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
- break #L11;
- }
- on core::Object catch(final core::Object _) {
- }
- :return_value = invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:74:37: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
+ };
+ (core::int) → asy::Future<core::String> y6 = (core::int v) → asy::Future<core::String> async /* futureValueType= core::String */ {
+ try {
+ return let final Never #t10 = self::throwing() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
+ }
+ on core::Object catch(final core::Object _) {
+ }
+ return invalid-expression "pkg/front_end/testcases/nnbd/issue41156.dart:74:37: Error: A non-null value must be returned since the return type 'String' doesn't allow null.
Future<String> Function(int) y6 = (int v) async /* error */ {
^" in null;
- break #L11;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- };
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ };
}
diff --git a/pkg/front_end/testcases/nnbd/issue41437a.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437a.dart.strong.transformed.expect
index 5c6560a..030ca78 100644
--- a/pkg/front_end/testcases/nnbd/issue41437a.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437a.dart.strong.transformed.expect
@@ -33,122 +33,20 @@
static method getNull() → dynamic
return null;
-static method getFutureNull() → asy::Future<dynamic> /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = null;
- break #L1;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method getFutureNull() → asy::Future<dynamic> async /* futureValueType= dynamic */ {
+ return null;
}
-static method getFutureBool() → asy::Future<core::bool> /* futureValueType= core::bool */ /* originally async */ {
- final asy::_Future<core::bool> :async_future = new asy::_Future::•<core::bool>();
- core::bool* :is_sync = false;
- core::bool? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = true;
- break #L2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method getFutureBool() → asy::Future<core::bool> async /* futureValueType= core::bool */ {
+ return true;
}
-static method test1() → asy::Future<core::bool> /* futureValueType= core::bool */ /* originally async */ {
- final asy::_Future<core::bool> :async_future = new asy::_Future::•<core::bool>();
- core::bool* :is_sync = false;
- FutureOr<core::bool>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(self::getNull(), :async_op_then, :async_op_error) in null;
- :return_value = :result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<core::bool>;
- break #L3;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
+static method test1() → asy::Future<core::bool> async /* futureValueType= core::bool */
+ return await self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<core::bool>;
static method test2() → asy::Future<core::bool>
return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<core::bool>;
static method test3() → core::bool
return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
-static method test4() → asy::Future<core::bool> /* futureValueType= core::bool */ /* originally async */ {
- final asy::_Future<core::bool> :async_future = new asy::_Future::•<core::bool>();
- core::bool* :is_sync = false;
- FutureOr<core::bool>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- [yield] let dynamic #t2 = asy::_awaitHelper(self::getFutureNull(), :async_op_then, :async_op_error) in null;
- :return_value = :result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<core::bool>;
- break #L4;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
+static method test4() → asy::Future<core::bool> async /* futureValueType= core::bool */
+ return await self::getFutureNull() as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<core::bool>;
static method test5() → asy::Future<core::bool>
return invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:18:25: Error: A value of type 'Future<dynamic>' can't be returned from a function with return type 'Future<bool>'.
- 'Future' is from 'dart:async'.
@@ -156,250 +54,41 @@
^" in self::getFutureNull() as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
static method test6() → asy::Future<core::bool>
return self::getFutureBool();
-static method test7() → asy::Future<core::bool> /* futureValueType= core::bool */ /* originally async */ {
- final asy::_Future<core::bool> :async_future = new asy::_Future::•<core::bool>();
- core::bool* :is_sync = false;
- FutureOr<core::bool>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- :return_value = self::getFutureBool();
- break #L5;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L6:
- {
- function test1() → asy::Future<core::bool> /* futureValueType= core::bool */ /* originally async */ {
- final asy::_Future<core::bool> :async_future = new asy::_Future::•<core::bool>();
- core::bool* :is_sync = false;
- FutureOr<core::bool>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L7:
- {
- [yield] let dynamic #t3 = asy::_awaitHelper(self::getNull(), :async_op_then, :async_op_error) in null;
- :return_value = :result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<core::bool>;
- break #L7;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
- function test2() → asy::Future<core::bool>
- return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<core::bool>;
- function test3() → core::bool
- return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
- function test4() → asy::Future<core::bool> /* futureValueType= core::bool */ /* originally async */ {
- final asy::_Future<core::bool> :async_future = new asy::_Future::•<core::bool>();
- core::bool* :is_sync = false;
- FutureOr<core::bool>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L8:
- {
- [yield] let dynamic #t4 = asy::_awaitHelper(self::getFutureNull(), :async_op_then, :async_op_error) in null;
- :return_value = :result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<core::bool>;
- break #L8;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
- function test5() → asy::Future<core::bool>
- return invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:27:27: Error: A value of type 'Future<dynamic>' can't be returned from a function with return type 'Future<bool>'.
+static method test7() → asy::Future<core::bool> async /* futureValueType= core::bool */
+ return self::getFutureBool();
+static method test() → dynamic async /* futureValueType= dynamic */ {
+ function test1() → asy::Future<core::bool> async /* futureValueType= core::bool */
+ return await self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<core::bool>;
+ function test2() → asy::Future<core::bool>
+ return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<core::bool>;
+ function test3() → core::bool
+ return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+ function test4() → asy::Future<core::bool> async /* futureValueType= core::bool */
+ return await self::getFutureNull() as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<core::bool>;
+ function test5() → asy::Future<core::bool>
+ return invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:27:27: Error: A value of type 'Future<dynamic>' can't be returned from a function with return type 'Future<bool>'.
- 'Future' is from 'dart:async'.
Future<bool> test5() => getFutureNull(); // error
^" in self::getFutureNull() as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
- function test6() → asy::Future<core::bool>
- return self::getFutureBool();
- function test7() → asy::Future<core::bool> /* futureValueType= core::bool */ /* originally async */ {
- final asy::_Future<core::bool> :async_future = new asy::_Future::•<core::bool>();
- core::bool* :is_sync = false;
- FutureOr<core::bool>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L9:
- {
- :return_value = self::getFutureBool();
- break #L9;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
- asy::Future<core::bool> var1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:31:52: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'Future<bool>'.
+ function test6() → asy::Future<core::bool>
+ return self::getFutureBool();
+ function test7() → asy::Future<core::bool> async /* futureValueType= core::bool */
+ return self::getFutureBool();
+ asy::Future<core::bool> var1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:31:52: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'Future<bool>'.
- 'Future' is from 'dart:async'.
Future<bool> var1 = (() async => await getNull())(); // error
- ^" in (() → asy::Future<dynamic> /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L10:
- {
- [yield] let dynamic #t5 = asy::_awaitHelper(self::getNull(), :async_op_then, :async_op_error) in null;
- :return_value = :result_or_exception;
- break #L10;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- })(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
- asy::Future<core::bool> var2 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<core::bool>;
- core::bool var3 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
- asy::Future<core::bool> var4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:34:58: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'Future<bool>'.
+ ^" in (() → asy::Future<dynamic> async /* futureValueType= dynamic */ => await self::getNull())(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
+ asy::Future<core::bool> var2 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<core::bool>;
+ core::bool var3 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+ asy::Future<core::bool> var4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:34:58: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'Future<bool>'.
- 'Future' is from 'dart:async'.
Future<bool> var4 = (() async => await getFutureNull())(); // error
- ^" in (() → asy::Future<dynamic> /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L11:
- {
- [yield] let dynamic #t6 = asy::_awaitHelper(self::getFutureNull(), :async_op_then, :async_op_error) in null;
- :return_value = :result_or_exception;
- break #L11;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- })(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
- asy::Future<core::bool> var5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:35:46: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'Future<bool>'.
+ ^" in (() → asy::Future<dynamic> async /* futureValueType= dynamic */ => await self::getFutureNull())(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
+ asy::Future<core::bool> var5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:35:46: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'Future<bool>'.
- 'Future' is from 'dart:async'.
Future<bool> var5 = (() => getFutureNull())(); // error
^" in (() → asy::Future<dynamic> => self::getFutureNull())(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
- asy::Future<core::bool> var6 = (() → asy::Future<core::bool> => self::getFutureBool())(){() → asy::Future<core::bool>};
- asy::Future<core::bool> var7 = (() → asy::Future<core::bool> /* futureValueType= core::bool */ /* originally async */ {
- final asy::_Future<core::bool> :async_future = new asy::_Future::•<core::bool>();
- core::bool* :is_sync = false;
- FutureOr<core::bool>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L12:
- {
- :return_value = self::getFutureBool();
- break #L12;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- })(){() → asy::Future<core::bool>};
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ asy::Future<core::bool> var6 = (() → asy::Future<core::bool> => self::getFutureBool())(){() → asy::Future<core::bool>};
+ asy::Future<core::bool> var7 = (() → asy::Future<core::bool> async /* futureValueType= core::bool */ => self::getFutureBool())(){() → asy::Future<core::bool>};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41437a.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437a.dart.weak.transformed.expect
index 5c6560a..030ca78 100644
--- a/pkg/front_end/testcases/nnbd/issue41437a.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437a.dart.weak.transformed.expect
@@ -33,122 +33,20 @@
static method getNull() → dynamic
return null;
-static method getFutureNull() → asy::Future<dynamic> /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = null;
- break #L1;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method getFutureNull() → asy::Future<dynamic> async /* futureValueType= dynamic */ {
+ return null;
}
-static method getFutureBool() → asy::Future<core::bool> /* futureValueType= core::bool */ /* originally async */ {
- final asy::_Future<core::bool> :async_future = new asy::_Future::•<core::bool>();
- core::bool* :is_sync = false;
- core::bool? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = true;
- break #L2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method getFutureBool() → asy::Future<core::bool> async /* futureValueType= core::bool */ {
+ return true;
}
-static method test1() → asy::Future<core::bool> /* futureValueType= core::bool */ /* originally async */ {
- final asy::_Future<core::bool> :async_future = new asy::_Future::•<core::bool>();
- core::bool* :is_sync = false;
- FutureOr<core::bool>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(self::getNull(), :async_op_then, :async_op_error) in null;
- :return_value = :result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<core::bool>;
- break #L3;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
+static method test1() → asy::Future<core::bool> async /* futureValueType= core::bool */
+ return await self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<core::bool>;
static method test2() → asy::Future<core::bool>
return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<core::bool>;
static method test3() → core::bool
return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
-static method test4() → asy::Future<core::bool> /* futureValueType= core::bool */ /* originally async */ {
- final asy::_Future<core::bool> :async_future = new asy::_Future::•<core::bool>();
- core::bool* :is_sync = false;
- FutureOr<core::bool>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- [yield] let dynamic #t2 = asy::_awaitHelper(self::getFutureNull(), :async_op_then, :async_op_error) in null;
- :return_value = :result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<core::bool>;
- break #L4;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
+static method test4() → asy::Future<core::bool> async /* futureValueType= core::bool */
+ return await self::getFutureNull() as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<core::bool>;
static method test5() → asy::Future<core::bool>
return invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:18:25: Error: A value of type 'Future<dynamic>' can't be returned from a function with return type 'Future<bool>'.
- 'Future' is from 'dart:async'.
@@ -156,250 +54,41 @@
^" in self::getFutureNull() as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
static method test6() → asy::Future<core::bool>
return self::getFutureBool();
-static method test7() → asy::Future<core::bool> /* futureValueType= core::bool */ /* originally async */ {
- final asy::_Future<core::bool> :async_future = new asy::_Future::•<core::bool>();
- core::bool* :is_sync = false;
- FutureOr<core::bool>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- :return_value = self::getFutureBool();
- break #L5;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L6:
- {
- function test1() → asy::Future<core::bool> /* futureValueType= core::bool */ /* originally async */ {
- final asy::_Future<core::bool> :async_future = new asy::_Future::•<core::bool>();
- core::bool* :is_sync = false;
- FutureOr<core::bool>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L7:
- {
- [yield] let dynamic #t3 = asy::_awaitHelper(self::getNull(), :async_op_then, :async_op_error) in null;
- :return_value = :result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<core::bool>;
- break #L7;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
- function test2() → asy::Future<core::bool>
- return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<core::bool>;
- function test3() → core::bool
- return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
- function test4() → asy::Future<core::bool> /* futureValueType= core::bool */ /* originally async */ {
- final asy::_Future<core::bool> :async_future = new asy::_Future::•<core::bool>();
- core::bool* :is_sync = false;
- FutureOr<core::bool>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L8:
- {
- [yield] let dynamic #t4 = asy::_awaitHelper(self::getFutureNull(), :async_op_then, :async_op_error) in null;
- :return_value = :result_or_exception as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<core::bool>;
- break #L8;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
- function test5() → asy::Future<core::bool>
- return invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:27:27: Error: A value of type 'Future<dynamic>' can't be returned from a function with return type 'Future<bool>'.
+static method test7() → asy::Future<core::bool> async /* futureValueType= core::bool */
+ return self::getFutureBool();
+static method test() → dynamic async /* futureValueType= dynamic */ {
+ function test1() → asy::Future<core::bool> async /* futureValueType= core::bool */
+ return await self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<core::bool>;
+ function test2() → asy::Future<core::bool>
+ return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<core::bool>;
+ function test3() → core::bool
+ return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+ function test4() → asy::Future<core::bool> async /* futureValueType= core::bool */
+ return await self::getFutureNull() as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<core::bool>;
+ function test5() → asy::Future<core::bool>
+ return invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:27:27: Error: A value of type 'Future<dynamic>' can't be returned from a function with return type 'Future<bool>'.
- 'Future' is from 'dart:async'.
Future<bool> test5() => getFutureNull(); // error
^" in self::getFutureNull() as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
- function test6() → asy::Future<core::bool>
- return self::getFutureBool();
- function test7() → asy::Future<core::bool> /* futureValueType= core::bool */ /* originally async */ {
- final asy::_Future<core::bool> :async_future = new asy::_Future::•<core::bool>();
- core::bool* :is_sync = false;
- FutureOr<core::bool>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L9:
- {
- :return_value = self::getFutureBool();
- break #L9;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
- asy::Future<core::bool> var1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:31:52: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'Future<bool>'.
+ function test6() → asy::Future<core::bool>
+ return self::getFutureBool();
+ function test7() → asy::Future<core::bool> async /* futureValueType= core::bool */
+ return self::getFutureBool();
+ asy::Future<core::bool> var1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:31:52: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'Future<bool>'.
- 'Future' is from 'dart:async'.
Future<bool> var1 = (() async => await getNull())(); // error
- ^" in (() → asy::Future<dynamic> /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L10:
- {
- [yield] let dynamic #t5 = asy::_awaitHelper(self::getNull(), :async_op_then, :async_op_error) in null;
- :return_value = :result_or_exception;
- break #L10;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- })(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
- asy::Future<core::bool> var2 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<core::bool>;
- core::bool var3 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
- asy::Future<core::bool> var4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:34:58: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'Future<bool>'.
+ ^" in (() → asy::Future<dynamic> async /* futureValueType= dynamic */ => await self::getNull())(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
+ asy::Future<core::bool> var2 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Future<core::bool>;
+ core::bool var3 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+ asy::Future<core::bool> var4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:34:58: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'Future<bool>'.
- 'Future' is from 'dart:async'.
Future<bool> var4 = (() async => await getFutureNull())(); // error
- ^" in (() → asy::Future<dynamic> /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L11:
- {
- [yield] let dynamic #t6 = asy::_awaitHelper(self::getFutureNull(), :async_op_then, :async_op_error) in null;
- :return_value = :result_or_exception;
- break #L11;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- })(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
- asy::Future<core::bool> var5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:35:46: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'Future<bool>'.
+ ^" in (() → asy::Future<dynamic> async /* futureValueType= dynamic */ => await self::getFutureNull())(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
+ asy::Future<core::bool> var5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437a.dart:35:46: Error: A value of type 'Future<dynamic>' can't be assigned to a variable of type 'Future<bool>'.
- 'Future' is from 'dart:async'.
Future<bool> var5 = (() => getFutureNull())(); // error
^" in (() → asy::Future<dynamic> => self::getFutureNull())(){() → asy::Future<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Future<core::bool>;
- asy::Future<core::bool> var6 = (() → asy::Future<core::bool> => self::getFutureBool())(){() → asy::Future<core::bool>};
- asy::Future<core::bool> var7 = (() → asy::Future<core::bool> /* futureValueType= core::bool */ /* originally async */ {
- final asy::_Future<core::bool> :async_future = new asy::_Future::•<core::bool>();
- core::bool* :is_sync = false;
- FutureOr<core::bool>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L12:
- {
- :return_value = self::getFutureBool();
- break #L12;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- })(){() → asy::Future<core::bool>};
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ asy::Future<core::bool> var6 = (() → asy::Future<core::bool> => self::getFutureBool())(){() → asy::Future<core::bool>};
+ asy::Future<core::bool> var7 = (() → asy::Future<core::bool> async /* futureValueType= core::bool */ => self::getFutureBool())(){() → asy::Future<core::bool>};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.transformed.expect
index 815faef..0ce9817 100644
--- a/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437b.dart.strong.transformed.expect
@@ -39,7 +39,6 @@
//
import self as self;
import "dart:core" as core;
-import "dart:async" as asy;
static method getNull() → dynamic
return null;
@@ -142,158 +141,135 @@
}
return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
}
-static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- function test1() → core::Iterable<core::bool> /* originally sync* */ {
- function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
- {
- {
- :iterator.{core::_SyncIterator::_current} = self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
- [yield] true;
- }
- }
- return false;
- }
- return :sync_op;
+static method test() → dynamic async /* futureValueType= dynamic */ {
+ function test1() → core::Iterable<core::bool> /* originally sync* */ {
+ function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
+ core::int :await_jump_var = 0;
+ dynamic :await_ctx_var;
+ function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
+ {
+ {
+ :iterator.{core::_SyncIterator::_current} = self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+ [yield] true;
}
- return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
}
- function test2() → core::Iterable<core::bool>
- return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<core::bool>;
- function test3() → core::bool
- return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
- function test4() → core::Iterable<core::bool> /* originally sync* */ {
- function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
- {
- {
- :iterator.{core::_SyncIterator::_yieldEachIterable} = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:38:12: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
+ return false;
+ }
+ return :sync_op;
+ }
+ return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
+ }
+ function test2() → core::Iterable<core::bool>
+ return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<core::bool>;
+ function test3() → core::bool
+ return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+ function test4() → core::Iterable<core::bool> /* originally sync* */ {
+ function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
+ core::int :await_jump_var = 0;
+ dynamic :await_ctx_var;
+ function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
+ {
+ {
+ :iterator.{core::_SyncIterator::_yieldEachIterable} = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:38:12: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
- 'Iterable' is from 'dart:core'.
yield* getIterableNull(); // error
^" in self::getIterableNull() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
- [yield] true;
- }
- }
- return false;
- }
- return :sync_op;
+ [yield] true;
}
- return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
}
- function test5() → core::Iterable<core::bool>
- return invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:41:29: Error: A value of type 'Iterable<dynamic>' can't be returned from a function with return type 'Iterable<bool>'.
+ return false;
+ }
+ return :sync_op;
+ }
+ return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
+ }
+ function test5() → core::Iterable<core::bool>
+ return invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:41:29: Error: A value of type 'Iterable<dynamic>' can't be returned from a function with return type 'Iterable<bool>'.
- 'Iterable' is from 'dart:core'.
Iterable<bool> test5() => getIterableNull(); // error
^" in self::getIterableNull() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
- function test6() → core::Iterable<core::bool>
- return self::getIterableBool();
- function test7() → core::Iterable<core::bool> /* originally sync* */ {
- function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
- {
- {
- :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
- [yield] true;
- }
- }
- return false;
- }
- return :sync_op;
+ function test6() → core::Iterable<core::bool>
+ return self::getIterableBool();
+ function test7() → core::Iterable<core::bool> /* originally sync* */ {
+ function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
+ core::int :await_jump_var = 0;
+ dynamic :await_ctx_var;
+ function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
+ {
+ {
+ :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
+ [yield] true;
}
- return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
}
- core::Iterable<core::bool> var1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:49:5: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
+ return false;
+ }
+ return :sync_op;
+ }
+ return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
+ }
+ core::Iterable<core::bool> var1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:49:5: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
- 'Iterable' is from 'dart:core'.
})(); // error
^" in (() → core::Iterable<dynamic> /* originally sync* */ {
- function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
- {
- {
- :iterator.{core::_SyncIterator::_current} = self::getNull();
- [yield] true;
- }
- }
- return false;
- }
- return :sync_op;
+ function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
+ core::int :await_jump_var = 0;
+ dynamic :await_ctx_var;
+ function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
+ {
+ {
+ :iterator.{core::_SyncIterator::_current} = self::getNull();
+ [yield] true;
}
- return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
- })(){() → core::Iterable<dynamic>} as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
- core::Iterable<core::bool> var2 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<core::bool>;
- core::bool var3 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
- core::Iterable<core::bool> var4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:54:5: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
+ }
+ return false;
+ }
+ return :sync_op;
+ }
+ return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
+ })(){() → core::Iterable<dynamic>} as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
+ core::Iterable<core::bool> var2 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<core::bool>;
+ core::bool var3 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+ core::Iterable<core::bool> var4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:54:5: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
- 'Iterable' is from 'dart:core'.
})(); // error
^" in (() → core::Iterable<dynamic> /* originally sync* */ {
- function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
- {
- {
- :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableNull();
- [yield] true;
- }
- }
- return false;
- }
- return :sync_op;
+ function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
+ core::int :await_jump_var = 0;
+ dynamic :await_ctx_var;
+ function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
+ {
+ {
+ :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableNull();
+ [yield] true;
}
- return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
- })(){() → core::Iterable<dynamic>} as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
- core::Iterable<core::bool> var5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:55:50: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
+ }
+ return false;
+ }
+ return :sync_op;
+ }
+ return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
+ })(){() → core::Iterable<dynamic>} as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
+ core::Iterable<core::bool> var5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:55:50: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
- 'Iterable' is from 'dart:core'.
Iterable<bool> var5 = (() => getIterableNull())(); // error
^" in (() → core::Iterable<dynamic> => self::getIterableNull())(){() → core::Iterable<dynamic>} as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
- core::Iterable<core::bool> var6 = (() → core::Iterable<core::bool> => self::getIterableBool())(){() → core::Iterable<core::bool>};
- core::Iterable<core::bool> var7 = (() → core::Iterable<core::bool> /* originally sync* */ {
- function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
- {
- {
- :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
- [yield] true;
- }
- }
- return false;
- }
- return :sync_op;
+ core::Iterable<core::bool> var6 = (() → core::Iterable<core::bool> => self::getIterableBool())(){() → core::Iterable<core::bool>};
+ core::Iterable<core::bool> var7 = (() → core::Iterable<core::bool> /* originally sync* */ {
+ function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
+ core::int :await_jump_var = 0;
+ dynamic :await_ctx_var;
+ function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
+ {
+ {
+ :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
+ [yield] true;
}
- return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
- })(){() → core::Iterable<core::bool>};
+ }
+ return false;
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
+ return :sync_op;
}
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
+ })(){() → core::Iterable<core::bool>};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.transformed.expect
index 815faef..0ce9817 100644
--- a/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437b.dart.weak.transformed.expect
@@ -39,7 +39,6 @@
//
import self as self;
import "dart:core" as core;
-import "dart:async" as asy;
static method getNull() → dynamic
return null;
@@ -142,158 +141,135 @@
}
return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
}
-static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- function test1() → core::Iterable<core::bool> /* originally sync* */ {
- function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
- {
- {
- :iterator.{core::_SyncIterator::_current} = self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
- [yield] true;
- }
- }
- return false;
- }
- return :sync_op;
+static method test() → dynamic async /* futureValueType= dynamic */ {
+ function test1() → core::Iterable<core::bool> /* originally sync* */ {
+ function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
+ core::int :await_jump_var = 0;
+ dynamic :await_ctx_var;
+ function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
+ {
+ {
+ :iterator.{core::_SyncIterator::_current} = self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+ [yield] true;
}
- return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
}
- function test2() → core::Iterable<core::bool>
- return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<core::bool>;
- function test3() → core::bool
- return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
- function test4() → core::Iterable<core::bool> /* originally sync* */ {
- function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
- {
- {
- :iterator.{core::_SyncIterator::_yieldEachIterable} = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:38:12: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
+ return false;
+ }
+ return :sync_op;
+ }
+ return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
+ }
+ function test2() → core::Iterable<core::bool>
+ return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<core::bool>;
+ function test3() → core::bool
+ return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+ function test4() → core::Iterable<core::bool> /* originally sync* */ {
+ function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
+ core::int :await_jump_var = 0;
+ dynamic :await_ctx_var;
+ function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
+ {
+ {
+ :iterator.{core::_SyncIterator::_yieldEachIterable} = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:38:12: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
- 'Iterable' is from 'dart:core'.
yield* getIterableNull(); // error
^" in self::getIterableNull() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
- [yield] true;
- }
- }
- return false;
- }
- return :sync_op;
+ [yield] true;
}
- return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
}
- function test5() → core::Iterable<core::bool>
- return invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:41:29: Error: A value of type 'Iterable<dynamic>' can't be returned from a function with return type 'Iterable<bool>'.
+ return false;
+ }
+ return :sync_op;
+ }
+ return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
+ }
+ function test5() → core::Iterable<core::bool>
+ return invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:41:29: Error: A value of type 'Iterable<dynamic>' can't be returned from a function with return type 'Iterable<bool>'.
- 'Iterable' is from 'dart:core'.
Iterable<bool> test5() => getIterableNull(); // error
^" in self::getIterableNull() as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
- function test6() → core::Iterable<core::bool>
- return self::getIterableBool();
- function test7() → core::Iterable<core::bool> /* originally sync* */ {
- function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
- {
- {
- :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
- [yield] true;
- }
- }
- return false;
- }
- return :sync_op;
+ function test6() → core::Iterable<core::bool>
+ return self::getIterableBool();
+ function test7() → core::Iterable<core::bool> /* originally sync* */ {
+ function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
+ core::int :await_jump_var = 0;
+ dynamic :await_ctx_var;
+ function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
+ {
+ {
+ :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
+ [yield] true;
}
- return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
}
- core::Iterable<core::bool> var1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:49:5: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
+ return false;
+ }
+ return :sync_op;
+ }
+ return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
+ }
+ core::Iterable<core::bool> var1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:49:5: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
- 'Iterable' is from 'dart:core'.
})(); // error
^" in (() → core::Iterable<dynamic> /* originally sync* */ {
- function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
- {
- {
- :iterator.{core::_SyncIterator::_current} = self::getNull();
- [yield] true;
- }
- }
- return false;
- }
- return :sync_op;
+ function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
+ core::int :await_jump_var = 0;
+ dynamic :await_ctx_var;
+ function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
+ {
+ {
+ :iterator.{core::_SyncIterator::_current} = self::getNull();
+ [yield] true;
}
- return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
- })(){() → core::Iterable<dynamic>} as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
- core::Iterable<core::bool> var2 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<core::bool>;
- core::bool var3 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
- core::Iterable<core::bool> var4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:54:5: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
+ }
+ return false;
+ }
+ return :sync_op;
+ }
+ return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
+ })(){() → core::Iterable<dynamic>} as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
+ core::Iterable<core::bool> var2 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<core::bool>;
+ core::bool var3 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+ core::Iterable<core::bool> var4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:54:5: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
- 'Iterable' is from 'dart:core'.
})(); // error
^" in (() → core::Iterable<dynamic> /* originally sync* */ {
- function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
- {
- {
- :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableNull();
- [yield] true;
- }
- }
- return false;
- }
- return :sync_op;
+ function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
+ core::int :await_jump_var = 0;
+ dynamic :await_ctx_var;
+ function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
+ {
+ {
+ :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableNull();
+ [yield] true;
}
- return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
- })(){() → core::Iterable<dynamic>} as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
- core::Iterable<core::bool> var5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:55:50: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
+ }
+ return false;
+ }
+ return :sync_op;
+ }
+ return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
+ })(){() → core::Iterable<dynamic>} as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
+ core::Iterable<core::bool> var5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437b.dart:55:50: Error: A value of type 'Iterable<dynamic>' can't be assigned to a variable of type 'Iterable<bool>'.
- 'Iterable' is from 'dart:core'.
Iterable<bool> var5 = (() => getIterableNull())(); // error
^" in (() → core::Iterable<dynamic> => self::getIterableNull())(){() → core::Iterable<dynamic>} as{TypeError,ForNonNullableByDefault} core::Iterable<core::bool>;
- core::Iterable<core::bool> var6 = (() → core::Iterable<core::bool> => self::getIterableBool())(){() → core::Iterable<core::bool>};
- core::Iterable<core::bool> var7 = (() → core::Iterable<core::bool> /* originally sync* */ {
- function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
- {
- {
- :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
- [yield] true;
- }
- }
- return false;
- }
- return :sync_op;
+ core::Iterable<core::bool> var6 = (() → core::Iterable<core::bool> => self::getIterableBool())(){() → core::Iterable<core::bool>};
+ core::Iterable<core::bool> var7 = (() → core::Iterable<core::bool> /* originally sync* */ {
+ function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
+ core::int :await_jump_var = 0;
+ dynamic :await_ctx_var;
+ function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
+ {
+ {
+ :iterator.{core::_SyncIterator::_yieldEachIterable} = self::getIterableBool();
+ [yield] true;
}
- return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
- })(){() → core::Iterable<core::bool>};
+ }
+ return false;
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
+ return :sync_op;
}
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ return new core::_SyncIterable::•<core::bool>(:sync_op_gen);
+ })(){() → core::Iterable<core::bool>};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41437c.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437c.dart.strong.transformed.expect
index c8058e6..a6f6ba7 100644
--- a/pkg/front_end/testcases/nnbd/issue41437c.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437c.dart.strong.transformed.expect
@@ -40,148 +40,27 @@
import self as self;
import "dart:async" as asy;
import "dart:core" as core;
-import "dart:_internal" as _in;
static method getNull() → dynamic
return null;
-static method getStreamNull() → asy::Stream<dynamic> /* originally async* */ {
- asy::_AsyncStarStreamController<dynamic>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L1:
- {
- if(:controller.{asy::_AsyncStarStreamController::add}(null){(dynamic) → core::bool})
- return null;
- else
- [yield] null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
- return :controller_stream;
+static method getStreamNull() → asy::Stream<dynamic> async* {
+ yield null;
}
-static method getStreamBool() → asy::Stream<core::bool> /* originally async* */ {
- asy::_AsyncStarStreamController<core::bool>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L2:
- {
- if(:controller.{asy::_AsyncStarStreamController::add}(true){(core::bool) → core::bool})
- return null;
- else
- [yield] null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
- return :controller_stream;
+static method getStreamBool() → asy::Stream<core::bool> async* {
+ yield true;
}
-static method test1() → asy::Stream<core::bool> /* originally async* */ {
- asy::_AsyncStarStreamController<core::bool>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L3:
- {
- if(:controller.{asy::_AsyncStarStreamController::add}(self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool){(core::bool) → core::bool})
- return null;
- else
- [yield] null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
- return :controller_stream;
+static method test1() → asy::Stream<core::bool> async* {
+ yield self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
}
static method test2() → asy::Stream<core::bool>
return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<core::bool>;
static method test3() → core::bool
return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
-static method test4() → asy::Stream<core::bool> /* originally async* */ {
- asy::_AsyncStarStreamController<core::bool>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L4:
- {
- :controller.{asy::_AsyncStarStreamController::addStream}(invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:21:10: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
+static method test4() → asy::Stream<core::bool> async* {
+ yield* invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:21:10: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
- 'Stream' is from 'dart:async'.
yield* getStreamNull(); // error
- ^" in self::getStreamNull() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>){(asy::Stream<core::bool>) → void};
- [yield] null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- return null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
- return :controller_stream;
+ ^" in self::getStreamNull() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
}
static method test5() → asy::Stream<core::bool>
return invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:24:25: Error: A value of type 'Stream<dynamic>' can't be returned from a function with return type 'Stream<bool>'.
@@ -190,287 +69,54 @@
^" in self::getStreamNull() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
static method test6() → asy::Stream<core::bool>
return self::getStreamBool();
-static method test7() → asy::Stream<core::bool> /* originally async* */ {
- asy::_AsyncStarStreamController<core::bool>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L5:
- {
- :controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamBool()){(asy::Stream<core::bool>) → void};
- [yield] null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- return null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
- return :controller_stream;
+static method test7() → asy::Stream<core::bool> async* {
+ yield* self::getStreamBool();
}
-static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L6:
- {
- function test1() → asy::Stream<core::bool> /* originally async* */ {
- asy::_AsyncStarStreamController<core::bool>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L7:
- {
- if(:controller.{asy::_AsyncStarStreamController::add}(self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool){(core::bool) → core::bool})
- return null;
- else
- [yield] null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
- return :controller_stream;
- }
- function test2() → asy::Stream<core::bool>
- return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<core::bool>;
- function test3() → core::bool
- return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
- function test4() → asy::Stream<core::bool> /* originally async* */ {
- asy::_AsyncStarStreamController<core::bool>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L8:
- {
- :controller.{asy::_AsyncStarStreamController::addStream}(invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:38:12: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
+static method test() → dynamic async /* futureValueType= dynamic */ {
+ function test1() → asy::Stream<core::bool> async* {
+ yield self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+ }
+ function test2() → asy::Stream<core::bool>
+ return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<core::bool>;
+ function test3() → core::bool
+ return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+ function test4() → asy::Stream<core::bool> async* {
+ yield* invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:38:12: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
- 'Stream' is from 'dart:async'.
yield* getStreamNull(); // error
- ^" in self::getStreamNull() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>){(asy::Stream<core::bool>) → void};
- [yield] null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- return null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
- return :controller_stream;
- }
- function test5() → asy::Stream<core::bool>
- return invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:41:27: Error: A value of type 'Stream<dynamic>' can't be returned from a function with return type 'Stream<bool>'.
+ ^" in self::getStreamNull() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
+ }
+ function test5() → asy::Stream<core::bool>
+ return invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:41:27: Error: A value of type 'Stream<dynamic>' can't be returned from a function with return type 'Stream<bool>'.
- 'Stream' is from 'dart:async'.
Stream<bool> test5() => getStreamNull(); // error
^" in self::getStreamNull() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
- function test6() → asy::Stream<core::bool>
- return self::getStreamBool();
- function test7() → asy::Stream<core::bool> /* originally async* */ {
- asy::_AsyncStarStreamController<core::bool>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L9:
- {
- :controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamBool()){(asy::Stream<core::bool>) → void};
- [yield] null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- return null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
- return :controller_stream;
- }
- asy::Stream<core::bool> var1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:49:5: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
+ function test6() → asy::Stream<core::bool>
+ return self::getStreamBool();
+ function test7() → asy::Stream<core::bool> async* {
+ yield* self::getStreamBool();
+ }
+ asy::Stream<core::bool> var1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:49:5: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
- 'Stream' is from 'dart:async'.
})(); // error
- ^" in (() → asy::Stream<dynamic> /* originally async* */ {
- asy::_AsyncStarStreamController<dynamic>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L10:
- {
- if(:controller.{asy::_AsyncStarStreamController::add}(self::getNull()){(dynamic) → core::bool})
- return null;
- else
- [yield] null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
- return :controller_stream;
- })(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
- asy::Stream<core::bool> var2 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<core::bool>;
- core::bool var3 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
- asy::Stream<core::bool> var4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:54:5: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
+ ^" in (() → asy::Stream<dynamic> async* {
+ yield self::getNull();
+ })(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
+ asy::Stream<core::bool> var2 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<core::bool>;
+ core::bool var3 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+ asy::Stream<core::bool> var4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:54:5: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
- 'Stream' is from 'dart:async'.
})(); // error
- ^" in (() → asy::Stream<dynamic> /* originally async* */ {
- asy::_AsyncStarStreamController<dynamic>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L11:
- {
- :controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamNull()){(asy::Stream<dynamic>) → void};
- [yield] null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- return null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
- return :controller_stream;
- })(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
- asy::Stream<core::bool> var5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:55:46: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
+ ^" in (() → asy::Stream<dynamic> async* {
+ yield* self::getStreamNull();
+ })(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
+ asy::Stream<core::bool> var5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:55:46: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
- 'Stream' is from 'dart:async'.
Stream<bool> var5 = (() => getStreamNull())(); // error
^" in (() → asy::Stream<dynamic> => self::getStreamNull())(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
- asy::Stream<core::bool> var6 = (() → asy::Stream<core::bool> => self::getStreamBool())(){() → asy::Stream<core::bool>};
- asy::Stream<core::bool> var7 = (() → asy::Stream<core::bool> /* originally async* */ {
- asy::_AsyncStarStreamController<core::bool>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L12:
- {
- :controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamBool()){(asy::Stream<core::bool>) → void};
- [yield] null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- return null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
- return :controller_stream;
- })(){() → asy::Stream<core::bool>};
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ asy::Stream<core::bool> var6 = (() → asy::Stream<core::bool> => self::getStreamBool())(){() → asy::Stream<core::bool>};
+ asy::Stream<core::bool> var7 = (() → asy::Stream<core::bool> async* {
+ yield* self::getStreamBool();
+ })(){() → asy::Stream<core::bool>};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41437c.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41437c.dart.weak.transformed.expect
index c8058e6..a6f6ba7 100644
--- a/pkg/front_end/testcases/nnbd/issue41437c.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41437c.dart.weak.transformed.expect
@@ -40,148 +40,27 @@
import self as self;
import "dart:async" as asy;
import "dart:core" as core;
-import "dart:_internal" as _in;
static method getNull() → dynamic
return null;
-static method getStreamNull() → asy::Stream<dynamic> /* originally async* */ {
- asy::_AsyncStarStreamController<dynamic>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L1:
- {
- if(:controller.{asy::_AsyncStarStreamController::add}(null){(dynamic) → core::bool})
- return null;
- else
- [yield] null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
- return :controller_stream;
+static method getStreamNull() → asy::Stream<dynamic> async* {
+ yield null;
}
-static method getStreamBool() → asy::Stream<core::bool> /* originally async* */ {
- asy::_AsyncStarStreamController<core::bool>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L2:
- {
- if(:controller.{asy::_AsyncStarStreamController::add}(true){(core::bool) → core::bool})
- return null;
- else
- [yield] null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
- return :controller_stream;
+static method getStreamBool() → asy::Stream<core::bool> async* {
+ yield true;
}
-static method test1() → asy::Stream<core::bool> /* originally async* */ {
- asy::_AsyncStarStreamController<core::bool>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L3:
- {
- if(:controller.{asy::_AsyncStarStreamController::add}(self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool){(core::bool) → core::bool})
- return null;
- else
- [yield] null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
- return :controller_stream;
+static method test1() → asy::Stream<core::bool> async* {
+ yield self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
}
static method test2() → asy::Stream<core::bool>
return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<core::bool>;
static method test3() → core::bool
return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
-static method test4() → asy::Stream<core::bool> /* originally async* */ {
- asy::_AsyncStarStreamController<core::bool>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L4:
- {
- :controller.{asy::_AsyncStarStreamController::addStream}(invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:21:10: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
+static method test4() → asy::Stream<core::bool> async* {
+ yield* invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:21:10: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
- 'Stream' is from 'dart:async'.
yield* getStreamNull(); // error
- ^" in self::getStreamNull() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>){(asy::Stream<core::bool>) → void};
- [yield] null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- return null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
- return :controller_stream;
+ ^" in self::getStreamNull() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
}
static method test5() → asy::Stream<core::bool>
return invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:24:25: Error: A value of type 'Stream<dynamic>' can't be returned from a function with return type 'Stream<bool>'.
@@ -190,287 +69,54 @@
^" in self::getStreamNull() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
static method test6() → asy::Stream<core::bool>
return self::getStreamBool();
-static method test7() → asy::Stream<core::bool> /* originally async* */ {
- asy::_AsyncStarStreamController<core::bool>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L5:
- {
- :controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamBool()){(asy::Stream<core::bool>) → void};
- [yield] null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- return null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
- return :controller_stream;
+static method test7() → asy::Stream<core::bool> async* {
+ yield* self::getStreamBool();
}
-static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L6:
- {
- function test1() → asy::Stream<core::bool> /* originally async* */ {
- asy::_AsyncStarStreamController<core::bool>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L7:
- {
- if(:controller.{asy::_AsyncStarStreamController::add}(self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool){(core::bool) → core::bool})
- return null;
- else
- [yield] null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
- return :controller_stream;
- }
- function test2() → asy::Stream<core::bool>
- return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<core::bool>;
- function test3() → core::bool
- return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
- function test4() → asy::Stream<core::bool> /* originally async* */ {
- asy::_AsyncStarStreamController<core::bool>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L8:
- {
- :controller.{asy::_AsyncStarStreamController::addStream}(invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:38:12: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
+static method test() → dynamic async /* futureValueType= dynamic */ {
+ function test1() → asy::Stream<core::bool> async* {
+ yield self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+ }
+ function test2() → asy::Stream<core::bool>
+ return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<core::bool>;
+ function test3() → core::bool
+ return self::getNull() as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+ function test4() → asy::Stream<core::bool> async* {
+ yield* invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:38:12: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
- 'Stream' is from 'dart:async'.
yield* getStreamNull(); // error
- ^" in self::getStreamNull() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>){(asy::Stream<core::bool>) → void};
- [yield] null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- return null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
- return :controller_stream;
- }
- function test5() → asy::Stream<core::bool>
- return invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:41:27: Error: A value of type 'Stream<dynamic>' can't be returned from a function with return type 'Stream<bool>'.
+ ^" in self::getStreamNull() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
+ }
+ function test5() → asy::Stream<core::bool>
+ return invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:41:27: Error: A value of type 'Stream<dynamic>' can't be returned from a function with return type 'Stream<bool>'.
- 'Stream' is from 'dart:async'.
Stream<bool> test5() => getStreamNull(); // error
^" in self::getStreamNull() as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
- function test6() → asy::Stream<core::bool>
- return self::getStreamBool();
- function test7() → asy::Stream<core::bool> /* originally async* */ {
- asy::_AsyncStarStreamController<core::bool>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L9:
- {
- :controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamBool()){(asy::Stream<core::bool>) → void};
- [yield] null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- return null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
- return :controller_stream;
- }
- asy::Stream<core::bool> var1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:49:5: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
+ function test6() → asy::Stream<core::bool>
+ return self::getStreamBool();
+ function test7() → asy::Stream<core::bool> async* {
+ yield* self::getStreamBool();
+ }
+ asy::Stream<core::bool> var1 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:49:5: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
- 'Stream' is from 'dart:async'.
})(); // error
- ^" in (() → asy::Stream<dynamic> /* originally async* */ {
- asy::_AsyncStarStreamController<dynamic>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L10:
- {
- if(:controller.{asy::_AsyncStarStreamController::add}(self::getNull()){(dynamic) → core::bool})
- return null;
- else
- [yield] null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
- return :controller_stream;
- })(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
- asy::Stream<core::bool> var2 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<core::bool>;
- core::bool var3 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
- asy::Stream<core::bool> var4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:54:5: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
+ ^" in (() → asy::Stream<dynamic> async* {
+ yield self::getNull();
+ })(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
+ asy::Stream<core::bool> var2 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<core::bool>;
+ core::bool var3 = (() → dynamic => self::getNull())(){() → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} core::bool;
+ asy::Stream<core::bool> var4 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:54:5: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
- 'Stream' is from 'dart:async'.
})(); // error
- ^" in (() → asy::Stream<dynamic> /* originally async* */ {
- asy::_AsyncStarStreamController<dynamic>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L11:
- {
- :controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamNull()){(asy::Stream<dynamic>) → void};
- [yield] null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- return null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
- return :controller_stream;
- })(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
- asy::Stream<core::bool> var5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:55:46: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
+ ^" in (() → asy::Stream<dynamic> async* {
+ yield* self::getStreamNull();
+ })(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
+ asy::Stream<core::bool> var5 = invalid-expression "pkg/front_end/testcases/nnbd/issue41437c.dart:55:46: Error: A value of type 'Stream<dynamic>' can't be assigned to a variable of type 'Stream<bool>'.
- 'Stream' is from 'dart:async'.
Stream<bool> var5 = (() => getStreamNull())(); // error
^" in (() → asy::Stream<dynamic> => self::getStreamNull())(){() → asy::Stream<dynamic>} as{TypeError,ForNonNullableByDefault} asy::Stream<core::bool>;
- asy::Stream<core::bool> var6 = (() → asy::Stream<core::bool> => self::getStreamBool())(){() → asy::Stream<core::bool>};
- asy::Stream<core::bool> var7 = (() → asy::Stream<core::bool> /* originally async* */ {
- asy::_AsyncStarStreamController<core::bool>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L12:
- {
- :controller.{asy::_AsyncStarStreamController::addStream}(self::getStreamBool()){(asy::Stream<core::bool>) → void};
- [yield] null;
- if(_in::unsafeCast<core::bool>(:result_or_exception))
- return null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::bool>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::bool>};
- return :controller_stream;
- })(){() → asy::Stream<core::bool>};
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ asy::Stream<core::bool> var6 = (() → asy::Stream<core::bool> => self::getStreamBool())(){() → asy::Stream<core::bool>};
+ asy::Stream<core::bool> var7 = (() → asy::Stream<core::bool> async* {
+ yield* self::getStreamBool();
+ })(){() → asy::Stream<core::bool>};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue41602.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41602.dart.strong.transformed.expect
index 756e88b..bab6d364 100644
--- a/pkg/front_end/testcases/nnbd/issue41602.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41602.dart.strong.transformed.expect
@@ -12,113 +12,14 @@
//
import self as self;
import "dart:async" as asy;
-import "dart:core" as core;
-import "dart:_internal" as _in;
-static method returnFutureOfVoid() → asy::Future<void> /* futureValueType= void */ /* originally async */ {
- final asy::_Future<void> :async_future = new asy::_Future::•<void>();
- core::bool* :is_sync = false;
- void :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
+static method returnFutureOfVoid() → asy::Future<void> async /* futureValueType= void */ {}
static method returnVoid() → void {}
-static method returnVoidAsync() → void /* futureValueType= void */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method returnVoidAsync() → void async /* futureValueType= void */ {}
+static method test() → dynamic async /* futureValueType= dynamic */ {
+ await self::returnVoid();
+ await self::returnVoidAsync();
}
-static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(self::returnVoid(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<void>(:result_or_exception);
- [yield] let dynamic #t2 = asy::_awaitHelper(self::returnVoidAsync(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<void>(:result_or_exception);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- [yield] let dynamic #t3 = asy::_awaitHelper(self::returnFutureOfVoid(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<void>(:result_or_exception);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ await self::returnFutureOfVoid();
}
diff --git a/pkg/front_end/testcases/nnbd/issue41602.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41602.dart.weak.transformed.expect
index 756e88b..bab6d364 100644
--- a/pkg/front_end/testcases/nnbd/issue41602.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41602.dart.weak.transformed.expect
@@ -12,113 +12,14 @@
//
import self as self;
import "dart:async" as asy;
-import "dart:core" as core;
-import "dart:_internal" as _in;
-static method returnFutureOfVoid() → asy::Future<void> /* futureValueType= void */ /* originally async */ {
- final asy::_Future<void> :async_future = new asy::_Future::•<void>();
- core::bool* :is_sync = false;
- void :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
+static method returnFutureOfVoid() → asy::Future<void> async /* futureValueType= void */ {}
static method returnVoid() → void {}
-static method returnVoidAsync() → void /* futureValueType= void */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method returnVoidAsync() → void async /* futureValueType= void */ {}
+static method test() → dynamic async /* futureValueType= dynamic */ {
+ await self::returnVoid();
+ await self::returnVoidAsync();
}
-static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(self::returnVoid(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<void>(:result_or_exception);
- [yield] let dynamic #t2 = asy::_awaitHelper(self::returnVoidAsync(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<void>(:result_or_exception);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- [yield] let dynamic #t3 = asy::_awaitHelper(self::returnFutureOfVoid(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<void>(:result_or_exception);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ await self::returnFutureOfVoid();
}
diff --git a/pkg/front_end/testcases/nnbd/issue41697.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue41697.dart.strong.transformed.expect
index 271e82e..6b5ec79 100644
--- a/pkg/front_end/testcases/nnbd/issue41697.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41697.dart.strong.transformed.expect
@@ -17,7 +17,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -34,34 +33,8 @@
<S extends core::num>(S) → core::num f1 = c.{self::C::field1} = <S extends core::num>(S s) → core::num {
return s.{core::num::+}(1){(core::num) → core::num};
};
- <S extends FutureOr<core::num>>(S, FutureOr<core::num>) → asy::Future<core::num> f2 = c.{self::C::field2} = <S extends FutureOr<core::num>>(S s, FutureOr<core::num>t) → asy::Future<core::num> /* futureValueType= core::num */ /* originally async */ {
- final asy::_Future<core::num> :async_future = new asy::_Future::•<core::num>();
- core::bool* :is_sync = false;
- core::num? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(t, :async_op_then, :async_op_error) in null;
- :return_value = _in::unsafeCast<core::num>(:result_or_exception).{core::num::+}(1){(core::num) → core::num};
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ <S extends FutureOr<core::num>>(S, FutureOr<core::num>) → asy::Future<core::num> f2 = c.{self::C::field2} = <S extends FutureOr<core::num>>(S s, FutureOr<core::num>t) → asy::Future<core::num> async /* futureValueType= core::num */ {
+ return (await t).{core::num::+}(1){(core::num) → core::num};
};
}
static method test2(self::C<core::num?> c) → dynamic {
@@ -70,36 +43,10 @@
return s + 1; // error
^" in s.{core::num::+}(1){(core::num) → core::num};
};
- <S extends FutureOr<core::num?>>(S%, FutureOr<core::num?>) → asy::Future<core::num> f2 = c.{self::C::field2} = <S extends FutureOr<core::num?>>(S% s, FutureOr<core::num?>t) → asy::Future<core::num> /* futureValueType= core::num */ /* originally async */ {
- final asy::_Future<core::num> :async_future = new asy::_Future::•<core::num>();
- core::bool* :is_sync = false;
- FutureOr<core::num>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = asy::_awaitHelper(t, :async_op_then, :async_op_error) in null;
- :return_value = invalid-expression "pkg/front_end/testcases/nnbd/issue41697.dart:36:22: Error: Operator '+' cannot be called on 'num?' because it is potentially null.
+ <S extends FutureOr<core::num?>>(S%, FutureOr<core::num?>) → asy::Future<core::num> f2 = c.{self::C::field2} = <S extends FutureOr<core::num?>>(S% s, FutureOr<core::num?>t) → asy::Future<core::num> async /* futureValueType= core::num */ {
+ return invalid-expression "pkg/front_end/testcases/nnbd/issue41697.dart:36:22: Error: Operator '+' cannot be called on 'num?' because it is potentially null.
return (await t) + 1; // error
- ^" in _in::unsafeCast<core::num?>(:result_or_exception).{core::num::+}(1){(core::num) → core::num};
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ ^" in (await t).{core::num::+}(1){(core::num) → core::num};
};
}
static method test3<S extends core::num?>(self::test3::S% s) → dynamic
diff --git a/pkg/front_end/testcases/nnbd/issue41697.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue41697.dart.weak.transformed.expect
index 271e82e..6b5ec79 100644
--- a/pkg/front_end/testcases/nnbd/issue41697.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue41697.dart.weak.transformed.expect
@@ -17,7 +17,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
import "dart:async";
@@ -34,34 +33,8 @@
<S extends core::num>(S) → core::num f1 = c.{self::C::field1} = <S extends core::num>(S s) → core::num {
return s.{core::num::+}(1){(core::num) → core::num};
};
- <S extends FutureOr<core::num>>(S, FutureOr<core::num>) → asy::Future<core::num> f2 = c.{self::C::field2} = <S extends FutureOr<core::num>>(S s, FutureOr<core::num>t) → asy::Future<core::num> /* futureValueType= core::num */ /* originally async */ {
- final asy::_Future<core::num> :async_future = new asy::_Future::•<core::num>();
- core::bool* :is_sync = false;
- core::num? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(t, :async_op_then, :async_op_error) in null;
- :return_value = _in::unsafeCast<core::num>(:result_or_exception).{core::num::+}(1){(core::num) → core::num};
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ <S extends FutureOr<core::num>>(S, FutureOr<core::num>) → asy::Future<core::num> f2 = c.{self::C::field2} = <S extends FutureOr<core::num>>(S s, FutureOr<core::num>t) → asy::Future<core::num> async /* futureValueType= core::num */ {
+ return (await t).{core::num::+}(1){(core::num) → core::num};
};
}
static method test2(self::C<core::num?> c) → dynamic {
@@ -70,36 +43,10 @@
return s + 1; // error
^" in s.{core::num::+}(1){(core::num) → core::num};
};
- <S extends FutureOr<core::num?>>(S%, FutureOr<core::num?>) → asy::Future<core::num> f2 = c.{self::C::field2} = <S extends FutureOr<core::num?>>(S% s, FutureOr<core::num?>t) → asy::Future<core::num> /* futureValueType= core::num */ /* originally async */ {
- final asy::_Future<core::num> :async_future = new asy::_Future::•<core::num>();
- core::bool* :is_sync = false;
- FutureOr<core::num>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t2 = asy::_awaitHelper(t, :async_op_then, :async_op_error) in null;
- :return_value = invalid-expression "pkg/front_end/testcases/nnbd/issue41697.dart:36:22: Error: Operator '+' cannot be called on 'num?' because it is potentially null.
+ <S extends FutureOr<core::num?>>(S%, FutureOr<core::num?>) → asy::Future<core::num> f2 = c.{self::C::field2} = <S extends FutureOr<core::num?>>(S% s, FutureOr<core::num?>t) → asy::Future<core::num> async /* futureValueType= core::num */ {
+ return invalid-expression "pkg/front_end/testcases/nnbd/issue41697.dart:36:22: Error: Operator '+' cannot be called on 'num?' because it is potentially null.
return (await t) + 1; // error
- ^" in _in::unsafeCast<core::num?>(:result_or_exception).{core::num::+}(1){(core::num) → core::num};
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ ^" in (await t).{core::num::+}(1){(core::num) → core::num};
};
}
static method test3<S extends core::num?>(self::test3::S% s) → dynamic
diff --git a/pkg/front_end/testcases/nnbd/issue42540.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue42540.dart.strong.transformed.expect
index e9c16e6..5ff4605 100644
--- a/pkg/front_end/testcases/nnbd/issue42540.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42540.dart.strong.transformed.expect
@@ -5,35 +5,8 @@
static method getNull() → dynamic
return null;
-static method fn() → asy::Future<core::Object> /* futureValueType= core::Object */ /* originally async */ {
- final asy::_Future<core::Object> :async_future = new asy::_Future::•<core::Object>();
- core::bool* :is_sync = false;
- FutureOr<core::Object>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(self::getNull(), :async_op_then, :async_op_error) in null;
- core::Object o = let dynamic #t2 = :result_or_exception in #t2 == null ?{core::Object} #t2 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Object : #t2{core::Object};
- [yield] let dynamic #t3 = asy::_awaitHelper(self::getNull(), :async_op_then, :async_op_error) in null;
- :return_value = let dynamic #t4 = :result_or_exception in #t4 == null ?{FutureOr<core::Object>} #t4 as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<core::Object> : #t4{FutureOr<core::Object>};
- break #L1;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method fn() → asy::Future<core::Object> async /* futureValueType= core::Object */ {
+ core::Object o = let dynamic #t1 = await self::getNull() in #t1 == null ?{core::Object} #t1 as{TypeError,ForDynamic,ForNonNullableByDefault} core::Object : #t1{core::Object};
+ return let dynamic #t2 = await self::getNull() in #t2 == null ?{FutureOr<core::Object>} #t2 as{TypeError,ForDynamic,ForNonNullableByDefault} FutureOr<core::Object> : #t2{FutureOr<core::Object>};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42540.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42540.dart.weak.transformed.expect
index 717c3ef..81c92d4 100644
--- a/pkg/front_end/testcases/nnbd/issue42540.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42540.dart.weak.transformed.expect
@@ -5,35 +5,8 @@
static method getNull() → dynamic
return null;
-static method fn() → asy::Future<core::Object> /* futureValueType= core::Object */ /* originally async */ {
- final asy::_Future<core::Object> :async_future = new asy::_Future::•<core::Object>();
- core::bool* :is_sync = false;
- FutureOr<core::Object>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(self::getNull(), :async_op_then, :async_op_error) in null;
- core::Object o = :result_or_exception;
- [yield] let dynamic #t2 = asy::_awaitHelper(self::getNull(), :async_op_then, :async_op_error) in null;
- :return_value = :result_or_exception;
- break #L1;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method fn() → asy::Future<core::Object> async /* futureValueType= core::Object */ {
+ core::Object o = await self::getNull();
+ return await self::getNull();
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42546.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue42546.dart.strong.transformed.expect
index 229b2a9..8c665cc 100644
--- a/pkg/front_end/testcases/nnbd/issue42546.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42546.dart.strong.transformed.expect
@@ -37,65 +37,16 @@
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>
return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 0, #C3, #C12, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
}
-static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- asy::Future<self::Divergent<self::Divergent<core::int>>> x = invalid-expression "pkg/front_end/testcases/nnbd/issue42546.dart:14:75: Error: A value of type 'Future<Divergent<Divergent<Divergent<int>>>>' can't be assigned to a variable of type 'Future<Divergent<Divergent<int>>>'.
+static method test() → dynamic async /* futureValueType= dynamic */ {
+ asy::Future<self::Divergent<self::Divergent<core::int>>> x = invalid-expression "pkg/front_end/testcases/nnbd/issue42546.dart:14:75: Error: A value of type 'Future<Divergent<Divergent<Divergent<int>>>>' can't be assigned to a variable of type 'Future<Divergent<Divergent<int>>>'.
- 'Future' is from 'dart:async'.
- 'Divergent' is from 'pkg/front_end/testcases/nnbd/issue42546.dart'.
Future<Divergent<Divergent<int>>> x = (() async => new Divergent<int>())();
- ^" in (() → asy::Future<self::Divergent<self::Divergent<self::Divergent<core::int>>>> /* futureValueType= self::Divergent<self::Divergent<self::Divergent<core::int>>> */ /* originally async */ {
- final asy::_Future<self::Divergent<self::Divergent<self::Divergent<core::int>>>> :async_future = new asy::_Future::•<self::Divergent<self::Divergent<self::Divergent<core::int>>>>();
- core::bool* :is_sync = false;
- FutureOr<self::Divergent<self::Divergent<self::Divergent<core::int>>>>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = invalid-expression "pkg/front_end/testcases/nnbd/issue42546.dart:14:58: Error: A value of type 'Divergent<int>' can't be returned from an async function with return type 'Future<Divergent<Divergent<Divergent<int>>>>'.
+ ^" in (() → asy::Future<self::Divergent<self::Divergent<self::Divergent<core::int>>>> async /* futureValueType= self::Divergent<self::Divergent<self::Divergent<core::int>>> */ => invalid-expression "pkg/front_end/testcases/nnbd/issue42546.dart:14:58: Error: A value of type 'Divergent<int>' can't be returned from an async function with return type 'Future<Divergent<Divergent<Divergent<int>>>>'.
- 'Divergent' is from 'pkg/front_end/testcases/nnbd/issue42546.dart'.
- 'Future' is from 'dart:async'.
Future<Divergent<Divergent<int>>> x = (() async => new Divergent<int>())();
- ^" in new self::Divergent::•<core::int>() as{TypeError,ForNonNullableByDefault} self::Divergent<self::Divergent<self::Divergent<core::int>>>;
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- })(){() → asy::Future<self::Divergent<self::Divergent<self::Divergent<core::int>>>>} as{TypeError,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<core::int>>>;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ ^" in new self::Divergent::•<core::int>() as{TypeError,ForNonNullableByDefault} self::Divergent<self::Divergent<self::Divergent<core::int>>>)(){() → asy::Future<self::Divergent<self::Divergent<self::Divergent<core::int>>>>} as{TypeError,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<core::int>>>;
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42546.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42546.dart.weak.transformed.expect
index 229b2a9..8c665cc 100644
--- a/pkg/front_end/testcases/nnbd/issue42546.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42546.dart.weak.transformed.expect
@@ -37,65 +37,16 @@
no-such-method-forwarder method /* from org-dartlang-sdk:///sdk/lib/async/future.dart */ asStream() → asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>
return this.{self::Divergent::noSuchMethod}(new core::_InvocationMirror::_withType(#C11, 0, #C3, #C12, core::Map::unmodifiable<core::Symbol*, dynamic>(#C6))){(core::Invocation) → dynamic} as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<self::Divergent<self::Divergent<self::Divergent::T%>>>;
}
-static method test() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- asy::Future<self::Divergent<self::Divergent<core::int>>> x = invalid-expression "pkg/front_end/testcases/nnbd/issue42546.dart:14:75: Error: A value of type 'Future<Divergent<Divergent<Divergent<int>>>>' can't be assigned to a variable of type 'Future<Divergent<Divergent<int>>>'.
+static method test() → dynamic async /* futureValueType= dynamic */ {
+ asy::Future<self::Divergent<self::Divergent<core::int>>> x = invalid-expression "pkg/front_end/testcases/nnbd/issue42546.dart:14:75: Error: A value of type 'Future<Divergent<Divergent<Divergent<int>>>>' can't be assigned to a variable of type 'Future<Divergent<Divergent<int>>>'.
- 'Future' is from 'dart:async'.
- 'Divergent' is from 'pkg/front_end/testcases/nnbd/issue42546.dart'.
Future<Divergent<Divergent<int>>> x = (() async => new Divergent<int>())();
- ^" in (() → asy::Future<self::Divergent<self::Divergent<self::Divergent<core::int>>>> /* futureValueType= self::Divergent<self::Divergent<self::Divergent<core::int>>> */ /* originally async */ {
- final asy::_Future<self::Divergent<self::Divergent<self::Divergent<core::int>>>> :async_future = new asy::_Future::•<self::Divergent<self::Divergent<self::Divergent<core::int>>>>();
- core::bool* :is_sync = false;
- FutureOr<self::Divergent<self::Divergent<self::Divergent<core::int>>>>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = invalid-expression "pkg/front_end/testcases/nnbd/issue42546.dart:14:58: Error: A value of type 'Divergent<int>' can't be returned from an async function with return type 'Future<Divergent<Divergent<Divergent<int>>>>'.
+ ^" in (() → asy::Future<self::Divergent<self::Divergent<self::Divergent<core::int>>>> async /* futureValueType= self::Divergent<self::Divergent<self::Divergent<core::int>>> */ => invalid-expression "pkg/front_end/testcases/nnbd/issue42546.dart:14:58: Error: A value of type 'Divergent<int>' can't be returned from an async function with return type 'Future<Divergent<Divergent<Divergent<int>>>>'.
- 'Divergent' is from 'pkg/front_end/testcases/nnbd/issue42546.dart'.
- 'Future' is from 'dart:async'.
Future<Divergent<Divergent<int>>> x = (() async => new Divergent<int>())();
- ^" in new self::Divergent::•<core::int>() as{TypeError,ForNonNullableByDefault} self::Divergent<self::Divergent<self::Divergent<core::int>>>;
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- })(){() → asy::Future<self::Divergent<self::Divergent<self::Divergent<core::int>>>>} as{TypeError,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<core::int>>>;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ ^" in new self::Divergent::•<core::int>() as{TypeError,ForNonNullableByDefault} self::Divergent<self::Divergent<self::Divergent<core::int>>>)(){() → asy::Future<self::Divergent<self::Divergent<self::Divergent<core::int>>>>} as{TypeError,ForNonNullableByDefault} asy::Future<self::Divergent<self::Divergent<core::int>>>;
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue42743.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue42743.dart.strong.transformed.expect
index 057b001..8bf045e 100644
--- a/pkg/front_end/testcases/nnbd/issue42743.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42743.dart.strong.transformed.expect
@@ -1,64 +1,16 @@
library /*isNonNullableByDefault*/;
import self as self;
-import "dart:async" as asy;
import "dart:core" as core;
+import "dart:async" as asy;
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- core::bool b = (() → core::bool => true)(){() → core::bool};
- (dynamic _) → core::int? {
- if(b)
- return 42;
- };
- (dynamic _) → asy::Future<core::int?> /* futureValueType= core::int? */ /* originally async */ {
- final asy::_Future<core::int?> :async_future = new asy::_Future::•<core::int?>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- if(b) {
- :return_value = 42;
- break #L2;
- }
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- };
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ core::bool b = (() → core::bool => true)(){() → core::bool};
+ (dynamic _) → core::int? {
+ if(b)
+ return 42;
+ };
+ (dynamic _) → asy::Future<core::int?> async /* futureValueType= core::int? */ {
+ if(b)
+ return 42;
+ };
}
diff --git a/pkg/front_end/testcases/nnbd/issue42743.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue42743.dart.weak.transformed.expect
index 057b001..8bf045e 100644
--- a/pkg/front_end/testcases/nnbd/issue42743.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue42743.dart.weak.transformed.expect
@@ -1,64 +1,16 @@
library /*isNonNullableByDefault*/;
import self as self;
-import "dart:async" as asy;
import "dart:core" as core;
+import "dart:async" as asy;
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- core::bool b = (() → core::bool => true)(){() → core::bool};
- (dynamic _) → core::int? {
- if(b)
- return 42;
- };
- (dynamic _) → asy::Future<core::int?> /* futureValueType= core::int? */ /* originally async */ {
- final asy::_Future<core::int?> :async_future = new asy::_Future::•<core::int?>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- if(b) {
- :return_value = 42;
- break #L2;
- }
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- };
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ core::bool b = (() → core::bool => true)(){() → core::bool};
+ (dynamic _) → core::int? {
+ if(b)
+ return 42;
+ };
+ (dynamic _) → asy::Future<core::int?> async /* futureValueType= core::int? */ {
+ if(b)
+ return 42;
+ };
}
diff --git a/pkg/front_end/testcases/nnbd/issue44595.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue44595.dart.strong.transformed.expect
index 65142ef..8429111 100644
--- a/pkg/front_end/testcases/nnbd/issue44595.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue44595.dart.strong.transformed.expect
@@ -1,7 +1,6 @@
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-import "dart:async" as asy;
import "dart:async";
@@ -12,37 +11,14 @@
}
static method id<T extends core::Object? = dynamic>(self::id::T% value) → self::id::T%
return value;
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- FutureOr<core::int>x = 1.{core::num::+}(self::id<core::int>(1)){(core::num) → core::int};
- FutureOr<core::int>y = let final core::int #t1 = 1.{core::num::+}(self::id<core::int>(1)){(core::num) → core::int} in block {
- self::_extension#0|checkStaticType<core::int, (core::int) → core::int>(#t1);
- } =>#t1;
- FutureOr<core::int>z = let final core::int #t2 = 1.{core::num::+}(self::contextType<core::int>(1)){(core::num) → core::int} in block {
- self::_extension#0|checkStaticType<core::int, (core::int) → core::int>(#t2);
- } =>#t2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ FutureOr<core::int>x = 1.{core::num::+}(self::id<core::int>(1)){(core::num) → core::int};
+ FutureOr<core::int>y = let final core::int #t1 = 1.{core::num::+}(self::id<core::int>(1)){(core::num) → core::int} in block {
+ self::_extension#0|checkStaticType<core::int, (core::int) → core::int>(#t1);
+ } =>#t1;
+ FutureOr<core::int>z = let final core::int #t2 = 1.{core::num::+}(self::contextType<core::int>(1)){(core::num) → core::int} in block {
+ self::_extension#0|checkStaticType<core::int, (core::int) → core::int>(#t2);
+ } =>#t2;
}
static method _extension#0|checkStaticType<T extends core::Object? = dynamic, R extends (self::_extension#0|checkStaticType::T%) → self::_extension#0|checkStaticType::T% = (dynamic) → dynamic>(lowered final self::_extension#0|checkStaticType::T% #this) → void {}
static method _extension#0|get#checkStaticType<T extends core::Object? = dynamic>(lowered final self::_extension#0|get#checkStaticType::T% #this) → <R extends (self::_extension#0|get#checkStaticType::T%) → self::_extension#0|get#checkStaticType::T% = (dynamic) → dynamic>() → void
diff --git a/pkg/front_end/testcases/nnbd/issue44595.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue44595.dart.weak.transformed.expect
index 65142ef..8429111 100644
--- a/pkg/front_end/testcases/nnbd/issue44595.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue44595.dart.weak.transformed.expect
@@ -1,7 +1,6 @@
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
-import "dart:async" as asy;
import "dart:async";
@@ -12,37 +11,14 @@
}
static method id<T extends core::Object? = dynamic>(self::id::T% value) → self::id::T%
return value;
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- FutureOr<core::int>x = 1.{core::num::+}(self::id<core::int>(1)){(core::num) → core::int};
- FutureOr<core::int>y = let final core::int #t1 = 1.{core::num::+}(self::id<core::int>(1)){(core::num) → core::int} in block {
- self::_extension#0|checkStaticType<core::int, (core::int) → core::int>(#t1);
- } =>#t1;
- FutureOr<core::int>z = let final core::int #t2 = 1.{core::num::+}(self::contextType<core::int>(1)){(core::num) → core::int} in block {
- self::_extension#0|checkStaticType<core::int, (core::int) → core::int>(#t2);
- } =>#t2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ FutureOr<core::int>x = 1.{core::num::+}(self::id<core::int>(1)){(core::num) → core::int};
+ FutureOr<core::int>y = let final core::int #t1 = 1.{core::num::+}(self::id<core::int>(1)){(core::num) → core::int} in block {
+ self::_extension#0|checkStaticType<core::int, (core::int) → core::int>(#t1);
+ } =>#t1;
+ FutureOr<core::int>z = let final core::int #t2 = 1.{core::num::+}(self::contextType<core::int>(1)){(core::num) → core::int} in block {
+ self::_extension#0|checkStaticType<core::int, (core::int) → core::int>(#t2);
+ } =>#t2;
}
static method _extension#0|checkStaticType<T extends core::Object? = dynamic, R extends (self::_extension#0|checkStaticType::T%) → self::_extension#0|checkStaticType::T% = (dynamic) → dynamic>(lowered final self::_extension#0|checkStaticType::T% #this) → void {}
static method _extension#0|get#checkStaticType<T extends core::Object? = dynamic>(lowered final self::_extension#0|get#checkStaticType::T% #this) → <R extends (self::_extension#0|get#checkStaticType::T%) → self::_extension#0|get#checkStaticType::T% = (dynamic) → dynamic>() → void
diff --git a/pkg/front_end/testcases/nnbd/issue48768.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue48768.dart.strong.transformed.expect
index c6295ee..e54e3bd 100644
--- a/pkg/front_end/testcases/nnbd/issue48768.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue48768.dart.strong.transformed.expect
@@ -1,34 +1,8 @@
library /*isNonNullableByDefault*/;
import self as self;
-import "dart:async" as asy;
import "dart:core" as core;
-static method foo(dynamic y) → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper((<X extends core::Object? = dynamic>(() → core::List<X%> x, X% x2) → X% => x2)<FutureOr<dynamic>>(() → core::List<FutureOr<dynamic>> => y as{TypeError,ForDynamic,ForNonNullableByDefault} core::List<FutureOr<dynamic>>, throw 0){(() → core::List<FutureOr<dynamic>?>, FutureOr<dynamic>?) → FutureOr<dynamic>?}, :async_op_then, :async_op_error) in null;
- dynamic a = :result_or_exception;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method foo(dynamic y) → dynamic async /* futureValueType= dynamic */ {
+ dynamic a = await(<X extends core::Object? = dynamic>(() → core::List<X%> x, X% x2) → X% => x2)<FutureOr<dynamic>>(() → core::List<FutureOr<dynamic>> => y as{TypeError,ForDynamic,ForNonNullableByDefault} core::List<FutureOr<dynamic>>, throw 0){(() → core::List<FutureOr<dynamic>?>, FutureOr<dynamic>?) → FutureOr<dynamic>?};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/issue48768.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue48768.dart.weak.transformed.expect
index c6295ee..e54e3bd 100644
--- a/pkg/front_end/testcases/nnbd/issue48768.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/issue48768.dart.weak.transformed.expect
@@ -1,34 +1,8 @@
library /*isNonNullableByDefault*/;
import self as self;
-import "dart:async" as asy;
import "dart:core" as core;
-static method foo(dynamic y) → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper((<X extends core::Object? = dynamic>(() → core::List<X%> x, X% x2) → X% => x2)<FutureOr<dynamic>>(() → core::List<FutureOr<dynamic>> => y as{TypeError,ForDynamic,ForNonNullableByDefault} core::List<FutureOr<dynamic>>, throw 0){(() → core::List<FutureOr<dynamic>?>, FutureOr<dynamic>?) → FutureOr<dynamic>?}, :async_op_then, :async_op_error) in null;
- dynamic a = :result_or_exception;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method foo(dynamic y) → dynamic async /* futureValueType= dynamic */ {
+ dynamic a = await(<X extends core::Object? = dynamic>(() → core::List<X%> x, X% x2) → X% => x2)<FutureOr<dynamic>>(() → core::List<FutureOr<dynamic>> => y as{TypeError,ForDynamic,ForNonNullableByDefault} core::List<FutureOr<dynamic>>, throw 0){(() → core::List<FutureOr<dynamic>?>, FutureOr<dynamic>?) → FutureOr<dynamic>?};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/later.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/later.dart.strong.transformed.expect
index f0900fa..ca8810e 100644
--- a/pkg/front_end/testcases/nnbd/later.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/later.dart.strong.transformed.expect
@@ -65,7 +65,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
class A extends core::Object {
field core::int a = 42;
@@ -123,125 +122,37 @@
#t1.{core::List::add}{Invariant}(i){(core::int) → void};
} =>#t1;
}
-static method hest() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- dynamic :exception0;
- dynamic :stack_trace0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
+static method hest() → dynamic async /* futureValueType= dynamic */ {
+ {
+ asy::Stream<core::String> :stream = asy::Stream::fromIterable<core::String>(core::_GrowableList::_literal1<core::String>("hest"));
+ asy::_StreamIterator<core::String>? :for-iterator = new asy::_StreamIterator::•<core::String>(:stream);
+ try
+ while (let dynamic #t2 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ core::String s = :for-iterator.{asy::_StreamIterator::current}{core::String};
{
- asy::Stream<core::String> :stream = asy::Stream::fromIterable<core::String>(core::_GrowableList::_literal1<core::String>("hest"));
- asy::_StreamIterator<core::String>? :for-iterator = new asy::_StreamIterator::•<core::String>(:stream);
- try
- #L2:
- while (true) {
- dynamic #t2 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- core::String s = :for-iterator.{asy::_StreamIterator::current}{core::String};
- {
- core::print(s);
- }
- }
- else
- break #L2;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::String>?} == null)) {
- [yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ core::print(s);
}
- :return_value = "hest";
- break #L1;
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::String>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ return "hest";
}
-static method fisk() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- function #s1#initializer() → core::String
- return invalid-expression "pkg/front_end/testcases/nnbd/later.dart:38:20: Error: `await` expressions are not supported in late local initializers.
+static method fisk() → dynamic async /* futureValueType= dynamic */ {
+ function #s1#initializer() → core::String
+ return invalid-expression "pkg/front_end/testcases/nnbd/later.dart:38:20: Error: `await` expressions are not supported in late local initializers.
late String s1 = await hest();
^^^^^";
- late core::String s1 = #s1#initializer(){() → core::String};
- function #s2#initializer() → core::String
- return "${#C1}${invalid-expression "pkg/front_end/testcases/nnbd/later.dart:39:30: Error: `await` expressions are not supported in late local initializers.
+ late core::String s1 = #s1#initializer(){() → core::String};
+ function #s2#initializer() → core::String
+ return "${#C1}${invalid-expression "pkg/front_end/testcases/nnbd/later.dart:39:30: Error: `await` expressions are not supported in late local initializers.
late String s2 = '\${fisk}\${await hest()}\${fisk}';
^^^^^"}${#C1}";
- late core::String s2 = #s2#initializer(){() → core::String};
- function #f#initializer() → core::Function
- return () → asy::Future<dynamic> /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- [yield] let dynamic #t5 = asy::_awaitHelper(self::hest(), :async_op_then, :async_op_error) in null;
- :return_value = :result_or_exception;
- break #L4;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- };
- late core::Function f = #f#initializer(){() → core::Function};
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ late core::String s2 = #s2#initializer(){() → core::String};
+ function #f#initializer() → core::Function
+ return () → asy::Future<dynamic> async /* futureValueType= dynamic */ => await self::hest();
+ late core::Function f = #f#initializer(){() → core::Function};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/later.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/later.dart.weak.transformed.expect
index f0900fa..ca8810e 100644
--- a/pkg/front_end/testcases/nnbd/later.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/later.dart.weak.transformed.expect
@@ -65,7 +65,6 @@
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
-import "dart:_internal" as _in;
class A extends core::Object {
field core::int a = 42;
@@ -123,125 +122,37 @@
#t1.{core::List::add}{Invariant}(i){(core::int) → void};
} =>#t1;
}
-static method hest() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- dynamic :exception0;
- dynamic :stack_trace0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
+static method hest() → dynamic async /* futureValueType= dynamic */ {
+ {
+ asy::Stream<core::String> :stream = asy::Stream::fromIterable<core::String>(core::_GrowableList::_literal1<core::String>("hest"));
+ asy::_StreamIterator<core::String>? :for-iterator = new asy::_StreamIterator::•<core::String>(:stream);
+ try
+ while (let dynamic #t2 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ core::String s = :for-iterator.{asy::_StreamIterator::current}{core::String};
{
- asy::Stream<core::String> :stream = asy::Stream::fromIterable<core::String>(core::_GrowableList::_literal1<core::String>("hest"));
- asy::_StreamIterator<core::String>? :for-iterator = new asy::_StreamIterator::•<core::String>(:stream);
- try
- #L2:
- while (true) {
- dynamic #t2 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- core::String s = :for-iterator.{asy::_StreamIterator::current}{core::String};
- {
- core::print(s);
- }
- }
- else
- break #L2;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::String>?} == null)) {
- [yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
+ core::print(s);
}
- :return_value = "hest";
- break #L1;
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::String>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ return "hest";
}
-static method fisk() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- function #s1#initializer() → core::String
- return invalid-expression "pkg/front_end/testcases/nnbd/later.dart:38:20: Error: `await` expressions are not supported in late local initializers.
+static method fisk() → dynamic async /* futureValueType= dynamic */ {
+ function #s1#initializer() → core::String
+ return invalid-expression "pkg/front_end/testcases/nnbd/later.dart:38:20: Error: `await` expressions are not supported in late local initializers.
late String s1 = await hest();
^^^^^";
- late core::String s1 = #s1#initializer(){() → core::String};
- function #s2#initializer() → core::String
- return "${#C1}${invalid-expression "pkg/front_end/testcases/nnbd/later.dart:39:30: Error: `await` expressions are not supported in late local initializers.
+ late core::String s1 = #s1#initializer(){() → core::String};
+ function #s2#initializer() → core::String
+ return "${#C1}${invalid-expression "pkg/front_end/testcases/nnbd/later.dart:39:30: Error: `await` expressions are not supported in late local initializers.
late String s2 = '\${fisk}\${await hest()}\${fisk}';
^^^^^"}${#C1}";
- late core::String s2 = #s2#initializer(){() → core::String};
- function #f#initializer() → core::Function
- return () → asy::Future<dynamic> /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- [yield] let dynamic #t5 = asy::_awaitHelper(self::hest(), :async_op_then, :async_op_error) in null;
- :return_value = :result_or_exception;
- break #L4;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- };
- late core::Function f = #f#initializer(){() → core::Function};
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ late core::String s2 = #s2#initializer(){() → core::String};
+ function #f#initializer() → core::Function
+ return () → asy::Future<dynamic> async /* futureValueType= dynamic */ => await self::hest();
+ late core::Function f = #f#initializer(){() → core::Function};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/return_async.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/return_async.dart.strong.transformed.expect
index 53360c1..efe6e98 100644
--- a/pkg/front_end/testcases/nnbd/return_async.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/return_async.dart.strong.transformed.expect
@@ -2,159 +2,32 @@
import self as self;
import "dart:async" as asy;
import "dart:core" as core;
-import "dart:_internal" as _in;
import "dart:async";
static method throwSync() → asy::Future<void> {
throw "";
}
-static method allYield() → asy::Future<void> /* futureValueType= void */ /* originally async */ {
- final asy::_Future<void> :async_future = new asy::_Future::•<void>();
- core::bool* :is_sync = false;
- void :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(0, :async_op_then, :async_op_error) in null;
- _in::unsafeCast<core::int>(:result_or_exception);
- [yield] let dynamic #t2 = asy::_awaitHelper(self::allYield2(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<void>(:result_or_exception);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method allYield() → asy::Future<void> async /* futureValueType= void */ {
+ await 0;
+ await self::allYield2();
}
-static method allYield2() → asy::Future<void> /* futureValueType= void */ /* originally async */ {
- final asy::_Future<void> :async_future = new asy::_Future::•<void>();
- core::bool* :is_sync = false;
- void :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t3 = asy::_awaitHelper(0, :async_op_then, :async_op_error) in null;
- _in::unsafeCast<core::int>(:result_or_exception);
- [yield] let dynamic #t4 = asy::_awaitHelper(self::allYield3(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<void>(:result_or_exception);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method allYield2() → asy::Future<void> async /* futureValueType= void */ {
+ await 0;
+ await self::allYield3();
}
-static method allYield3() → asy::Future<void> /* futureValueType= void */ /* originally async */ {
- final asy::_Future<void> :async_future = new asy::_Future::•<void>();
- core::bool* :is_sync = false;
- void :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- [yield] let dynamic #t5 = asy::_awaitHelper(0, :async_op_then, :async_op_error) in null;
- _in::unsafeCast<core::int>(:result_or_exception);
- self::throwSync();
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method allYield3() → asy::Future<void> async /* futureValueType= void */ {
+ await 0;
+ self::throwSync();
}
-static method customErrorZone() → asy::Future<void> /* futureValueType= void */ /* originally async */ {
- final asy::_Future<void> :async_future = new asy::_Future::•<void>();
- core::bool* :is_sync = false;
- FutureOr<void>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- final asy::Completer<void> completer = asy::Completer::•<void>();
- asy::runZonedGuarded<asy::Future<Null>>(() → asy::Future<Null> /* futureValueType= Null */ /* originally async */ {
- final asy::_Future<Null> :async_future = new asy::_Future::•<Null>();
- core::bool* :is_sync = false;
- Null :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- [yield] let dynamic #t6 = asy::_awaitHelper(self::allYield(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<void>(:result_or_exception);
- completer.{asy::Completer::complete}(null){([FutureOr<void>?]) → void};
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }, (core::Object e, core::StackTrace s) → void {
- completer.{asy::Completer::completeError}(e, s){(core::Object, [core::StackTrace?]) → void};
- });
- :return_value = completer.{asy::Completer::future}{asy::Future<void>};
- break #L4;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method customErrorZone() → asy::Future<void> async /* futureValueType= void */ {
+ final asy::Completer<void> completer = asy::Completer::•<void>();
+ asy::runZonedGuarded<asy::Future<Null>>(() → asy::Future<Null> async /* futureValueType= Null */ {
+ await self::allYield();
+ completer.{asy::Completer::complete}(null){([FutureOr<void>?]) → void};
+ }, (core::Object e, core::StackTrace s) → void {
+ completer.{asy::Completer::completeError}(e, s){(core::Object, [core::StackTrace?]) → void};
+ });
+ return completer.{asy::Completer::future}{asy::Future<void>};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/return_async.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/return_async.dart.weak.transformed.expect
index 53360c1..efe6e98 100644
--- a/pkg/front_end/testcases/nnbd/return_async.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/return_async.dart.weak.transformed.expect
@@ -2,159 +2,32 @@
import self as self;
import "dart:async" as asy;
import "dart:core" as core;
-import "dart:_internal" as _in;
import "dart:async";
static method throwSync() → asy::Future<void> {
throw "";
}
-static method allYield() → asy::Future<void> /* futureValueType= void */ /* originally async */ {
- final asy::_Future<void> :async_future = new asy::_Future::•<void>();
- core::bool* :is_sync = false;
- void :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(0, :async_op_then, :async_op_error) in null;
- _in::unsafeCast<core::int>(:result_or_exception);
- [yield] let dynamic #t2 = asy::_awaitHelper(self::allYield2(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<void>(:result_or_exception);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method allYield() → asy::Future<void> async /* futureValueType= void */ {
+ await 0;
+ await self::allYield2();
}
-static method allYield2() → asy::Future<void> /* futureValueType= void */ /* originally async */ {
- final asy::_Future<void> :async_future = new asy::_Future::•<void>();
- core::bool* :is_sync = false;
- void :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t3 = asy::_awaitHelper(0, :async_op_then, :async_op_error) in null;
- _in::unsafeCast<core::int>(:result_or_exception);
- [yield] let dynamic #t4 = asy::_awaitHelper(self::allYield3(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<void>(:result_or_exception);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method allYield2() → asy::Future<void> async /* futureValueType= void */ {
+ await 0;
+ await self::allYield3();
}
-static method allYield3() → asy::Future<void> /* futureValueType= void */ /* originally async */ {
- final asy::_Future<void> :async_future = new asy::_Future::•<void>();
- core::bool* :is_sync = false;
- void :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- [yield] let dynamic #t5 = asy::_awaitHelper(0, :async_op_then, :async_op_error) in null;
- _in::unsafeCast<core::int>(:result_or_exception);
- self::throwSync();
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method allYield3() → asy::Future<void> async /* futureValueType= void */ {
+ await 0;
+ self::throwSync();
}
-static method customErrorZone() → asy::Future<void> /* futureValueType= void */ /* originally async */ {
- final asy::_Future<void> :async_future = new asy::_Future::•<void>();
- core::bool* :is_sync = false;
- FutureOr<void>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- final asy::Completer<void> completer = asy::Completer::•<void>();
- asy::runZonedGuarded<asy::Future<Null>>(() → asy::Future<Null> /* futureValueType= Null */ /* originally async */ {
- final asy::_Future<Null> :async_future = new asy::_Future::•<Null>();
- core::bool* :is_sync = false;
- Null :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- [yield] let dynamic #t6 = asy::_awaitHelper(self::allYield(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<void>(:result_or_exception);
- completer.{asy::Completer::complete}(null){([FutureOr<void>?]) → void};
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }, (core::Object e, core::StackTrace s) → void {
- completer.{asy::Completer::completeError}(e, s){(core::Object, [core::StackTrace?]) → void};
- });
- :return_value = completer.{asy::Completer::future}{asy::Future<void>};
- break #L4;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method customErrorZone() → asy::Future<void> async /* futureValueType= void */ {
+ final asy::Completer<void> completer = asy::Completer::•<void>();
+ asy::runZonedGuarded<asy::Future<Null>>(() → asy::Future<Null> async /* futureValueType= Null */ {
+ await self::allYield();
+ completer.{asy::Completer::complete}(null){([FutureOr<void>?]) → void};
+ }, (core::Object e, core::StackTrace s) → void {
+ completer.{asy::Completer::completeError}(e, s){(core::Object, [core::StackTrace?]) → void};
+ });
+ return completer.{asy::Completer::future}{asy::Future<void>};
}
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect
index d1fe484..cc1f3a8 100644
--- a/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/return_null.dart.strong.transformed.expect
@@ -91,182 +91,19 @@
String returnMixed(bool b) /*error*/ {
^" in null;
}
-static method returnAsync1() → asy::Future<dynamic> /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnAsync2() → FutureOr<dynamic> /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnAsync3() → FutureOr<core::int> /* futureValueType= core::int */ /* originally async */ {
- final asy::_Future<core::int> :async_future = new asy::_Future::•<core::int>();
- core::bool* :is_sync = false;
- FutureOr<core::int>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- :return_value = invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:27:15: Error: A non-null value must be returned since the return type 'int' doesn't allow null.
+static method returnAsync1() → asy::Future<dynamic> async /* futureValueType= dynamic */ {}
+static method returnAsync2() → FutureOr<dynamic> async /* futureValueType= dynamic */ {}
+static method returnAsync3() → FutureOr<core::int> async /* futureValueType= core::int */ {
+ return invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:27:15: Error: A non-null value must be returned since the return type 'int' doesn't allow null.
FutureOr<int> returnAsync3() async {} // error
^" in null;
- break #L3;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
}
-static method returnAsync4() → FutureOr<core::int?> /* futureValueType= core::int? */ /* originally async */ {
- final asy::_Future<core::int?> :async_future = new asy::_Future::•<core::int?>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method returnAsync4() → FutureOr<core::int?> async /* futureValueType= core::int? */ {}
+static method returnAsync5() → dynamic async /* futureValueType= dynamic */ {}
+static method returnAsync6() → asy::Future<core::int?> async /* futureValueType= core::int? */ {
+ return null;
}
-static method returnAsync5() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnAsync6() → asy::Future<core::int?> /* futureValueType= core::int? */ /* originally async */ {
- final asy::_Future<core::int?> :async_future = new asy::_Future::•<core::int?>();
- core::bool* :is_sync = false;
- FutureOr<core::int?>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L6:
- {
- :return_value = null;
- break #L6;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnAsync7() → asy::Future<core::int?> /* futureValueType= core::int? */ /* originally async */ {
- final asy::_Future<core::int?> :async_future = new asy::_Future::•<core::int?>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L7:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
+static method returnAsync7() → asy::Future<core::int?> async /* futureValueType= core::int? */ {}
static method yieldSync() → core::Iterable<dynamic> /* originally sync* */ {
function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
core::int :await_jump_var = 0;
@@ -279,40 +116,15 @@
}
return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
}
-static method yieldAsync() → asy::Stream<dynamic> /* originally async* */ {
- asy::_AsyncStarStreamController<dynamic>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L8:
- {}
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
- return :controller_stream;
-}
+static method yieldAsync() → asy::Stream<dynamic> async* {}
static method caseReturn1(self::Enum e) → self::Enum {
switch(e) {
- #L9:
+ #L1:
case #C3:
{
return e;
}
- #L10:
+ #L2:
case #C6:
{
return e;
@@ -321,12 +133,12 @@
}
static method caseReturn2(self::Enum e) → self::Enum {
switch(e) {
- #L11:
+ #L3:
case #C3:
{
return e;
}
- #L12:
+ #L4:
default:
{}
}
@@ -359,182 +171,19 @@
String returnMixed(bool b) /* error */ {
^" in null;
}
- function returnAsync1() → asy::Future<dynamic> /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L13:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
- function returnAsync2() → FutureOr<dynamic> /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L14:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
- function returnAsync3() → FutureOr<core::int> /* futureValueType= core::int */ /* originally async */ {
- final asy::_Future<core::int> :async_future = new asy::_Future::•<core::int>();
- core::bool* :is_sync = false;
- FutureOr<core::int>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L15:
- {
- :return_value = invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:83:3: Error: A non-null value must be returned since the return type 'int' doesn't allow null.
+ function returnAsync1() → asy::Future<dynamic> async /* futureValueType= dynamic */ {}
+ function returnAsync2() → FutureOr<dynamic> async /* futureValueType= dynamic */ {}
+ function returnAsync3() → FutureOr<core::int> async /* futureValueType= core::int */ {
+ return invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:83:3: Error: A non-null value must be returned since the return type 'int' doesn't allow null.
FutureOr<int> returnAsync3() async {} // error
^" in null;
- break #L15;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
}
- function returnAsync4() → FutureOr<core::int?> /* futureValueType= core::int? */ /* originally async */ {
- final asy::_Future<core::int?> :async_future = new asy::_Future::•<core::int?>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L16:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ function returnAsync4() → FutureOr<core::int?> async /* futureValueType= core::int? */ {}
+ function returnAsync5() → asy::Future<Null> async /* futureValueType= Null */ {}
+ function returnAsync6() → asy::Future<core::int?> async /* futureValueType= core::int? */ {
+ return null;
}
- function returnAsync5() → asy::Future<Null> /* futureValueType= Null */ /* originally async */ {
- final asy::_Future<Null> :async_future = new asy::_Future::•<Null>();
- core::bool* :is_sync = false;
- Null :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L17:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
- function returnAsync6() → asy::Future<core::int?> /* futureValueType= core::int? */ /* originally async */ {
- final asy::_Future<core::int?> :async_future = new asy::_Future::•<core::int?>();
- core::bool* :is_sync = false;
- FutureOr<core::int?>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L18:
- {
- :return_value = null;
- break #L18;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
- function returnAsync7() → asy::Future<core::int?> /* futureValueType= core::int? */ /* originally async */ {
- final asy::_Future<core::int?> :async_future = new asy::_Future::•<core::int?>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L19:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
+ function returnAsync7() → asy::Future<core::int?> async /* futureValueType= core::int? */ {}
function yieldSync() → core::Iterable<dynamic> /* originally sync* */ {
function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
core::int :await_jump_var = 0;
@@ -547,40 +196,15 @@
}
return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
}
- function yieldAsync() → asy::Stream<dynamic> /* originally async* */ {
- asy::_AsyncStarStreamController<dynamic>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L20:
- {}
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
- return :controller_stream;
- }
+ function yieldAsync() → asy::Stream<dynamic> async* {}
function caseReturn1(self::Enum e) → self::Enum {
switch(e) {
- #L21:
+ #L5:
case #C3:
{
return e;
}
- #L22:
+ #L6:
case #C6:
{
return e;
@@ -589,12 +213,12 @@
}
function caseReturn2(self::Enum e) → self::Enum {
switch(e) {
- #L23:
+ #L7:
case #C3:
{
return e;
}
- #L24:
+ #L8:
default:
{}
}
diff --git a/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect
index 1017e98..8108220 100644
--- a/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd/return_null.dart.weak.transformed.expect
@@ -92,182 +92,19 @@
String returnMixed(bool b) /*error*/ {
^" in null;
}
-static method returnAsync1() → asy::Future<dynamic> /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnAsync2() → FutureOr<dynamic> /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnAsync3() → FutureOr<core::int> /* futureValueType= core::int */ /* originally async */ {
- final asy::_Future<core::int> :async_future = new asy::_Future::•<core::int>();
- core::bool* :is_sync = false;
- FutureOr<core::int>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- :return_value = invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:27:15: Error: A non-null value must be returned since the return type 'int' doesn't allow null.
+static method returnAsync1() → asy::Future<dynamic> async /* futureValueType= dynamic */ {}
+static method returnAsync2() → FutureOr<dynamic> async /* futureValueType= dynamic */ {}
+static method returnAsync3() → FutureOr<core::int> async /* futureValueType= core::int */ {
+ return invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:27:15: Error: A non-null value must be returned since the return type 'int' doesn't allow null.
FutureOr<int> returnAsync3() async {} // error
^" in null;
- break #L3;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
}
-static method returnAsync4() → FutureOr<core::int?> /* futureValueType= core::int? */ /* originally async */ {
- final asy::_Future<core::int?> :async_future = new asy::_Future::•<core::int?>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method returnAsync4() → FutureOr<core::int?> async /* futureValueType= core::int? */ {}
+static method returnAsync5() → dynamic async /* futureValueType= dynamic */ {}
+static method returnAsync6() → asy::Future<core::int?> async /* futureValueType= core::int? */ {
+ return null;
}
-static method returnAsync5() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnAsync6() → asy::Future<core::int?> /* futureValueType= core::int? */ /* originally async */ {
- final asy::_Future<core::int?> :async_future = new asy::_Future::•<core::int?>();
- core::bool* :is_sync = false;
- FutureOr<core::int?>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L6:
- {
- :return_value = null;
- break #L6;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method returnAsync7() → asy::Future<core::int?> /* futureValueType= core::int? */ /* originally async */ {
- final asy::_Future<core::int?> :async_future = new asy::_Future::•<core::int?>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L7:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
+static method returnAsync7() → asy::Future<core::int?> async /* futureValueType= core::int? */ {}
static method yieldSync() → core::Iterable<dynamic> /* originally sync* */ {
function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
core::int :await_jump_var = 0;
@@ -280,57 +117,32 @@
}
return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
}
-static method yieldAsync() → asy::Stream<dynamic> /* originally async* */ {
- asy::_AsyncStarStreamController<dynamic>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L8:
- {}
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
- return :controller_stream;
-}
+static method yieldAsync() → asy::Stream<dynamic> async* {}
static method caseReturn1(self::Enum e) → self::Enum {
switch(e) {
- #L9:
+ #L1:
case #C3:
{
return e;
}
- #L10:
+ #L2:
case #C6:
{
return e;
}
- #L11:
+ #L3:
default:
throw new _in::ReachabilityError::•("`null` encountered as case in a switch expression with a non-nullable enum type.");
}
}
static method caseReturn2(self::Enum e) → self::Enum {
switch(e) {
- #L12:
+ #L4:
case #C3:
{
return e;
}
- #L13:
+ #L5:
default:
{}
}
@@ -363,182 +175,19 @@
String returnMixed(bool b) /* error */ {
^" in null;
}
- function returnAsync1() → asy::Future<dynamic> /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L14:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
- function returnAsync2() → FutureOr<dynamic> /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L15:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
- function returnAsync3() → FutureOr<core::int> /* futureValueType= core::int */ /* originally async */ {
- final asy::_Future<core::int> :async_future = new asy::_Future::•<core::int>();
- core::bool* :is_sync = false;
- FutureOr<core::int>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L16:
- {
- :return_value = invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:83:3: Error: A non-null value must be returned since the return type 'int' doesn't allow null.
+ function returnAsync1() → asy::Future<dynamic> async /* futureValueType= dynamic */ {}
+ function returnAsync2() → FutureOr<dynamic> async /* futureValueType= dynamic */ {}
+ function returnAsync3() → FutureOr<core::int> async /* futureValueType= core::int */ {
+ return invalid-expression "pkg/front_end/testcases/nnbd/return_null.dart:83:3: Error: A non-null value must be returned since the return type 'int' doesn't allow null.
FutureOr<int> returnAsync3() async {} // error
^" in null;
- break #L16;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
}
- function returnAsync4() → FutureOr<core::int?> /* futureValueType= core::int? */ /* originally async */ {
- final asy::_Future<core::int?> :async_future = new asy::_Future::•<core::int?>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L17:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ function returnAsync4() → FutureOr<core::int?> async /* futureValueType= core::int? */ {}
+ function returnAsync5() → asy::Future<Null> async /* futureValueType= Null */ {}
+ function returnAsync6() → asy::Future<core::int?> async /* futureValueType= core::int? */ {
+ return null;
}
- function returnAsync5() → asy::Future<Null> /* futureValueType= Null */ /* originally async */ {
- final asy::_Future<Null> :async_future = new asy::_Future::•<Null>();
- core::bool* :is_sync = false;
- Null :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L18:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
- function returnAsync6() → asy::Future<core::int?> /* futureValueType= core::int? */ /* originally async */ {
- final asy::_Future<core::int?> :async_future = new asy::_Future::•<core::int?>();
- core::bool* :is_sync = false;
- FutureOr<core::int?>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L19:
- {
- :return_value = null;
- break #L19;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
- function returnAsync7() → asy::Future<core::int?> /* futureValueType= core::int? */ /* originally async */ {
- final asy::_Future<core::int?> :async_future = new asy::_Future::•<core::int?>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L20:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
+ function returnAsync7() → asy::Future<core::int?> async /* futureValueType= core::int? */ {}
function yieldSync() → core::Iterable<dynamic> /* originally sync* */ {
function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
core::int :await_jump_var = 0;
@@ -551,57 +200,32 @@
}
return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
}
- function yieldAsync() → asy::Stream<dynamic> /* originally async* */ {
- asy::_AsyncStarStreamController<dynamic>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L21:
- {}
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
- return :controller_stream;
- }
+ function yieldAsync() → asy::Stream<dynamic> async* {}
function caseReturn1(self::Enum e) → self::Enum {
switch(e) {
- #L22:
+ #L6:
case #C3:
{
return e;
}
- #L23:
+ #L7:
case #C6:
{
return e;
}
- #L24:
+ #L8:
default:
throw new _in::ReachabilityError::•("`null` encountered as case in a switch expression with a non-nullable enum type.");
}
}
function caseReturn2(self::Enum e) → self::Enum {
switch(e) {
- #L25:
+ #L9:
case #C3:
{
return e;
}
- #L26:
+ #L10:
default:
{}
}
diff --git a/pkg/front_end/testcases/nnbd_mixed/issue41602.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/issue41602.dart.weak.transformed.expect
index 5dcce49..6608d90 100644
--- a/pkg/front_end/testcases/nnbd_mixed/issue41602.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/issue41602.dart.weak.transformed.expect
@@ -1,87 +1,12 @@
library;
import self as self;
import "dart:async" as asy;
-import "dart:core" as core;
-import "dart:_internal" as _in;
-static method returnFutureOfVoid() → asy::Future<void>* /* futureValueType= void */ /* originally async */ {
- final asy::_Future<void>* :async_future = new asy::_Future::•<void>();
- core::bool* :is_sync = false;
- void :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
-}
+static method returnFutureOfVoid() → asy::Future<void>* async /* futureValueType= void */ {}
static method returnVoid() → void {}
-static method returnVoidAsync() → void /* futureValueType= void */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(self::returnVoid(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<void>(:result_or_exception);
- [yield] let dynamic #t2 = asy::_awaitHelper(self::returnFutureOfVoid(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<void>(:result_or_exception);
- [yield] let dynamic #t3 = asy::_awaitHelper(self::returnVoidAsync(), :async_op_then, :async_op_error) in null;
- _in::unsafeCast<void>(:result_or_exception);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+static method returnVoidAsync() → void async /* futureValueType= void */ {}
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ await self::returnVoid();
+ await self::returnFutureOfVoid();
+ await self::returnVoidAsync();
}
diff --git a/pkg/front_end/testcases/nnbd_mixed/typedef_from_opt_in.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/typedef_from_opt_in.dart.weak.transformed.expect
index 05711ed..f52e2c9 100644
--- a/pkg/front_end/testcases/nnbd_mixed/typedef_from_opt_in.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/nnbd_mixed/typedef_from_opt_in.dart.weak.transformed.expect
@@ -7,33 +7,7 @@
import "org-dartlang-testcase:///typedef_from_opt_in_lib.dart";
static method method1() → (typ::Request*) →* FutureOr<typ::Response*>*
- return (typ::Request* r) → asy::Future<typ::Response*>* /* futureValueType= typ::Response* */ /* originally async */ {
- final asy::_Future<typ::Response*>* :async_future = new asy::_Future::•<typ::Response*>();
- core::bool* :is_sync = false;
- typ::Response? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = new typ::Response::•();
- break #L1;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
- };
+ return (typ::Request* r) → asy::Future<typ::Response*>* async /* futureValueType= typ::Response* */ => new typ::Response::•();
static method method2() → (core::int*) →* core::int*
return (core::int* r) → core::int* => 0;
static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_34850.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_34850.dart.weak.transformed.expect
index 88fac78..eff3876 100644
--- a/pkg/front_end/testcases/regress/issue_34850.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_34850.dart.weak.transformed.expect
@@ -44,95 +44,18 @@
//
import self as self;
import "dart:core" as core;
-import "dart:async" as asy;
-import "dart:_internal" as _in;
static method f1() → invalid-type {
return null;
}
static method Future<List extends core::Object? = dynamic>() → invalid-type {}
-static method f2() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = null;
- break #L1;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method f2() → dynamic async /* futureValueType= dynamic */
+ return null;
+static method f3() → invalid-type async /* futureValueType= invalid-type */ {
+ return null;
}
-static method f3() → invalid-type /* futureValueType= invalid-type */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = null;
- break #L2;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- core::print(self::f1());
- [yield] let dynamic #t1 = asy::_awaitHelper(self::f2(), :async_op_then, :async_op_error) in null;
- core::print(:result_or_exception);
- [yield] let dynamic #t2 = asy::_awaitHelper(self::f3(), :async_op_then, :async_op_error) in null;
- core::print(_in::unsafeCast<invalid-type>(:result_or_exception));
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ core::print(self::f1());
+ core::print(await self::f2());
+ core::print(await self::f3());
}
diff --git a/pkg/front_end/testcases/regress/issue_37681.dart.weak.transformed.expect b/pkg/front_end/testcases/regress/issue_37681.dart.weak.transformed.expect
index 3e8045c..e18b48b 100644
--- a/pkg/front_end/testcases/regress/issue_37681.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_37681.dart.weak.transformed.expect
@@ -15,147 +15,55 @@
// ^^^^^^^^^^^
//
import self as self;
-import "dart:async" as asy;
import "dart:core" as core;
-import "dart:_internal" as _in;
+import "dart:async" as asy;
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- dynamic :exception0;
- dynamic :stack_trace0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- function f_async() → core::int /* futureValueType= core::Object? */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = 42;
- break #L2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
- [yield] let dynamic #t1 = asy::_awaitHelper(f_async(){() → core::int}, :async_op_then, :async_op_error) in null;
- core::print(_in::unsafeCast<core::int>(:result_or_exception));
- function f_async_star() → core::int /* originally async* */ {
- asy::_AsyncStarStreamController<dynamic>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L3:
- {
- if(:controller.{asy::_AsyncStarStreamController::add}(42){(dynamic) → core::bool})
- return null;
- else
- [yield] null;
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<dynamic>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<dynamic>};
- return :controller_stream;
- }
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ function f_async() → core::int async /* futureValueType= core::Object? */ {
+ return 42;
+ }
+ core::print(await f_async(){() → core::int});
+ function f_async_star() → core::int async* {
+ yield 42;
+ }
+ {
+ asy::Stream<dynamic> :stream = (f_async_star(){() → core::int} as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<dynamic>;
+ asy::_StreamIterator<dynamic>? :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
+ try
+ while (let dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ dynamic x = :for-iterator.{asy::_StreamIterator::current}{dynamic};
{
- asy::Stream<dynamic> :stream = (f_async_star(){() → core::int} as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} asy::Stream<dynamic>;
- asy::_StreamIterator<dynamic>? :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
- try
- #L4:
- while (true) {
- dynamic #t2 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- dynamic x = :for-iterator.{asy::_StreamIterator::current}{dynamic};
- {
- core::print(x);
- }
- }
- else
- break #L4;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null)) {
- [yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
- }
- function f_sync_star() → core::int /* originally sync* */ {
- function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
- {
- {
- :iterator.{core::_SyncIterator::_current} = 42;
- [yield] true;
- }
- }
- return false;
- }
- return :sync_op;
- }
- return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
- }
- {
- core::Iterator<dynamic> :sync-for-iterator = ((f_sync_star(){() → core::int} as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
- for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
- dynamic x = :sync-for-iterator.{core::Iterator::current}{dynamic};
- {
- core::print(x);
- }
- }
+ core::print(x);
}
}
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<dynamic>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ function f_sync_star() → core::int /* originally sync* */ {
+ function :sync_op_gen() → (core::_SyncIterator<dynamic>?, dynamic, dynamic) → core::bool* {
+ core::int :await_jump_var = 0;
+ dynamic :await_ctx_var;
+ function :sync_op(core::_SyncIterator<dynamic>? :iterator, dynamic :exception, dynamic :stack_trace) → core::bool* yielding {
+ {
+ {
+ :iterator.{core::_SyncIterator::_current} = 42;
+ [yield] true;
+ }
+ }
+ return false;
+ }
+ return :sync_op;
}
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
+ return new core::_SyncIterable::•<dynamic>(:sync_op_gen);
+ }
+ {
+ core::Iterator<dynamic> :sync-for-iterator = ((f_sync_star(){() → core::int} as{ForNonNullableByDefault} dynamic) as{TypeError,ForDynamic,ForNonNullableByDefault} core::Iterable<dynamic>).{core::Iterable::iterator}{core::Iterator<dynamic>};
+ for (; :sync-for-iterator.{core::Iterator::moveNext}(){() → core::bool}; ) {
+ dynamic x = :sync-for-iterator.{core::Iterator::current}{dynamic};
+ {
+ core::print(x);
+ }
}
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ }
}
diff --git a/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.weak.transformed.expect b/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.weak.transformed.expect
index 4e4dd22..ae2ecfb 100644
--- a/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/set_literals/disambiguation_rule.dart.weak.transformed.expect
@@ -45,252 +45,92 @@
// ^
//
import self as self;
-import "dart:async" as asy;
import "dart:core" as core;
import "dart:collection" as col;
-import "dart:_internal" as _in;
+import "dart:async" as asy;
import "dart:async" show FutureOr;
import "dart:collection" show LinkedHashMap, LinkedHashSet;
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic>* :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- core::Map<core::int*, core::bool*>* m = <core::int*, core::bool*>{};
- core::Set<core::int*>* s = block {
- final core::Set<core::int*>* #t1 = new col::_CompactLinkedHashSet::•<core::int*>();
- } =>#t1;
- core::Iterable<core::int*>* i = block {
- final core::Set<core::int*>* #t2 = new col::_CompactLinkedHashSet::•<core::int*>();
- } =>#t2;
- col::LinkedHashSet<core::int*>* lhs = invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule.dart:15:28: Error: The set literal type 'Set<dynamic>' isn't of expected type 'LinkedHashSet<int>'.
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ core::Map<core::int*, core::bool*>* m = <core::int*, core::bool*>{};
+ core::Set<core::int*>* s = block {
+ final core::Set<core::int*>* #t1 = new col::_CompactLinkedHashSet::•<core::int*>();
+ } =>#t1;
+ core::Iterable<core::int*>* i = block {
+ final core::Set<core::int*>* #t2 = new col::_CompactLinkedHashSet::•<core::int*>();
+ } =>#t2;
+ col::LinkedHashSet<core::int*>* lhs = invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule.dart:15:28: Error: The set literal type 'Set<dynamic>' isn't of expected type 'LinkedHashSet<int>'.
- 'Set' is from 'dart:core'.
- 'LinkedHashSet' is from 'dart:collection'.
Change the type of the set literal or the context in which it is used.
LinkedHashSet<int> lhs = {};
^" in block {
- final core::Set<dynamic>* #t3 = new col::_CompactLinkedHashSet::•<dynamic>();
- } =>#t3;
- col::LinkedHashMap<core::int*, core::bool*>* lhm = invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule.dart:16:34: Error: The map literal type 'Map<dynamic, dynamic>' isn't of expected type 'LinkedHashMap<int, bool>'.
+ final core::Set<dynamic>* #t3 = new col::_CompactLinkedHashSet::•<dynamic>();
+ } =>#t3;
+ col::LinkedHashMap<core::int*, core::bool*>* lhm = invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule.dart:16:34: Error: The map literal type 'Map<dynamic, dynamic>' isn't of expected type 'LinkedHashMap<int, bool>'.
- 'Map' is from 'dart:core'.
- 'LinkedHashMap' is from 'dart:collection'.
Change the type of the map literal or the context in which it is used.
LinkedHashMap<int, bool> lhm = {};
^" in <dynamic, dynamic>{};
- [yield] let dynamic #t4 = asy::_awaitHelper(self::mapfun(), :async_op_then, :async_op_error) in null;
- core::Map<core::int*, core::bool*>* fm = _in::unsafeCast<core::Map<core::int*, core::bool*>*>(:result_or_exception);
- [yield] let dynamic #t5 = asy::_awaitHelper(self::setfun(), :async_op_then, :async_op_error) in null;
- core::Set<core::int*>* fs = _in::unsafeCast<core::Set<core::int*>*>(:result_or_exception);
- [yield] let dynamic #t6 = asy::_awaitHelper(self::iterablefun(), :async_op_then, :async_op_error) in null;
- core::Iterable<core::int*>* fi = _in::unsafeCast<core::Iterable<core::int*>*>(:result_or_exception);
- [yield] let dynamic #t7 = asy::_awaitHelper(self::lhsfun(), :async_op_then, :async_op_error) in null;
- col::LinkedHashSet<core::int*>* flhs = _in::unsafeCast<col::LinkedHashSet<core::int*>*>(:result_or_exception);
- [yield] let dynamic #t8 = asy::_awaitHelper(self::lhmfun(), :async_op_then, :async_op_error) in null;
- col::LinkedHashMap<core::int*, core::bool*>* flhm = _in::unsafeCast<col::LinkedHashMap<core::int*, core::bool*>*>(:result_or_exception);
- [yield] let dynamic #t9 = asy::_awaitHelper(self::mapfun2(), :async_op_then, :async_op_error) in null;
- core::Map<core::int*, core::bool*>* fm2 = _in::unsafeCast<core::Map<core::int*, core::bool*>*>(:result_or_exception);
- [yield] let dynamic #t10 = asy::_awaitHelper(self::setfun2(), :async_op_then, :async_op_error) in null;
- core::Set<core::int*>* fs2 = _in::unsafeCast<core::Set<core::int*>*>(:result_or_exception);
- [yield] let dynamic #t11 = asy::_awaitHelper(self::iterablefun2(), :async_op_then, :async_op_error) in null;
- core::Iterable<core::int*>* fi2 = _in::unsafeCast<core::Iterable<core::int*>*>(:result_or_exception);
- [yield] let dynamic #t12 = asy::_awaitHelper(self::lhsfun2(), :async_op_then, :async_op_error) in null;
- col::LinkedHashSet<core::int*>* flhs2 = _in::unsafeCast<col::LinkedHashSet<core::int*>*>(:result_or_exception);
- [yield] let dynamic #t13 = asy::_awaitHelper(self::lhmfun2(), :async_op_then, :async_op_error) in null;
- col::LinkedHashMap<core::int*, core::bool*>* flhm2 = _in::unsafeCast<col::LinkedHashMap<core::int*, core::bool*>*>(:result_or_exception);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
+ core::Map<core::int*, core::bool*>* fm = await self::mapfun();
+ core::Set<core::int*>* fs = await self::setfun();
+ core::Iterable<core::int*>* fi = await self::iterablefun();
+ col::LinkedHashSet<core::int*>* flhs = await self::lhsfun();
+ col::LinkedHashMap<core::int*, core::bool*>* flhm = await self::lhmfun();
+ core::Map<core::int*, core::bool*>* fm2 = await self::mapfun2();
+ core::Set<core::int*>* fs2 = await self::setfun2();
+ core::Iterable<core::int*>* fi2 = await self::iterablefun2();
+ col::LinkedHashSet<core::int*>* flhs2 = await self::lhsfun2();
+ col::LinkedHashMap<core::int*, core::bool*>* flhm2 = await self::lhmfun2();
}
-static method mapfun() → asy::Future<core::Map<core::int*, core::bool*>*>* /* futureValueType= core::Map<core::int*, core::bool*>* */ /* originally async */ {
- final asy::_Future<core::Map<core::int*, core::bool*>*>* :async_future = new asy::_Future::•<core::Map<core::int*, core::bool*>*>();
- core::bool* :is_sync = false;
- core::Map<core::int*, core::bool*>? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = <core::int*, core::bool*>{};
- break #L2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method setfun() → asy::Future<core::Set<core::int*>*>* /* futureValueType= core::Set<core::int*>* */ /* originally async */ {
- final asy::_Future<core::Set<core::int*>*>* :async_future = new asy::_Future::•<core::Set<core::int*>*>();
- core::bool* :is_sync = false;
- core::Set<core::int*>? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- :return_value = block {
- final core::Set<core::int*>* #t14 = new col::_CompactLinkedHashSet::•<core::int*>();
- } =>#t14;
- break #L3;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method iterablefun() → asy::Future<core::Iterable<core::int*>*>* /* futureValueType= core::Iterable<core::int*>* */ /* originally async */ {
- final asy::_Future<core::Iterable<core::int*>*>* :async_future = new asy::_Future::•<core::Iterable<core::int*>*>();
- core::bool* :is_sync = false;
- core::Iterable<core::int*>? :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- :return_value = block {
- final core::Set<core::int*>* #t15 = new col::_CompactLinkedHashSet::•<core::int*>();
- } =>#t15;
- break #L4;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method lhsfun() → asy::Future<col::LinkedHashSet<core::int*>*>* /* futureValueType= col::LinkedHashSet<core::int*>* */ /* originally async */ {
- final asy::_Future<col::LinkedHashSet<core::int*>*>* :async_future = new asy::_Future::•<col::LinkedHashSet<core::int*>*>();
- core::bool* :is_sync = false;
- FutureOr<col::LinkedHashSet<core::int*>*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- :return_value = invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule.dart:34:46: Error: The set literal type 'Future<Set<dynamic>>' isn't of expected type 'Future<LinkedHashSet<int>>'.
+static method mapfun() → asy::Future<core::Map<core::int*, core::bool*>*>* async /* futureValueType= core::Map<core::int*, core::bool*>* */
+ return <core::int*, core::bool*>{};
+static method setfun() → asy::Future<core::Set<core::int*>*>* async /* futureValueType= core::Set<core::int*>* */
+ return block {
+ final core::Set<core::int*>* #t4 = new col::_CompactLinkedHashSet::•<core::int*>();
+ } =>#t4;
+static method iterablefun() → asy::Future<core::Iterable<core::int*>*>* async /* futureValueType= core::Iterable<core::int*>* */
+ return block {
+ final core::Set<core::int*>* #t5 = new col::_CompactLinkedHashSet::•<core::int*>();
+ } =>#t5;
+static method lhsfun() → asy::Future<col::LinkedHashSet<core::int*>*>* async /* futureValueType= col::LinkedHashSet<core::int*>* */
+ return invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule.dart:34:46: Error: The set literal type 'Future<Set<dynamic>>' isn't of expected type 'Future<LinkedHashSet<int>>'.
- 'Future' is from 'dart:async'.
- 'Set' is from 'dart:core'.
- 'LinkedHashSet' is from 'dart:collection'.
Change the type of the set literal or the context in which it is used.
Future<LinkedHashSet<int>> lhsfun() async => {};
^" in block {
- final core::Set<dynamic>* #t16 = new col::_CompactLinkedHashSet::•<dynamic>();
- } =>#t16;
- break #L5;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method lhmfun() → asy::Future<col::LinkedHashMap<core::int*, core::bool*>*>* /* futureValueType= col::LinkedHashMap<core::int*, core::bool*>* */ /* originally async */ {
- final asy::_Future<col::LinkedHashMap<core::int*, core::bool*>*>* :async_future = new asy::_Future::•<col::LinkedHashMap<core::int*, core::bool*>*>();
- core::bool* :is_sync = false;
- FutureOr<col::LinkedHashMap<core::int*, core::bool*>*>* :return_value;
- (dynamic) →* dynamic :async_op_then;
- (core::Object*, core::StackTrace*) →* dynamic :async_op_error;
- core::int* :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L6:
- {
- :return_value = invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule.dart:35:52: Error: The map literal type 'Future<Map<dynamic, dynamic>>' isn't of expected type 'Future<LinkedHashMap<int, bool>>'.
+ final core::Set<dynamic>* #t6 = new col::_CompactLinkedHashSet::•<dynamic>();
+ } =>#t6;
+static method lhmfun() → asy::Future<col::LinkedHashMap<core::int*, core::bool*>*>* async /* futureValueType= col::LinkedHashMap<core::int*, core::bool*>* */
+ return invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule.dart:35:52: Error: The map literal type 'Future<Map<dynamic, dynamic>>' isn't of expected type 'Future<LinkedHashMap<int, bool>>'.
- 'Future' is from 'dart:async'.
- 'Map' is from 'dart:core'.
- 'LinkedHashMap' is from 'dart:collection'.
Change the type of the map literal or the context in which it is used.
Future<LinkedHashMap<int, bool>> lhmfun() async => {};
^" in <dynamic, dynamic>{};
- break #L6;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace* stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() →* dynamic};
- :is_sync = true;
- return :async_future;
-}
static method mapfun2() → FutureOr<core::Map<core::int*, core::bool*>*>*
return <core::int*, core::bool*>{};
static method setfun2() → FutureOr<core::Set<core::int*>*>*
return block {
- final core::Set<core::int*>* #t17 = new col::_CompactLinkedHashSet::•<core::int*>();
- } =>#t17;
+ final core::Set<core::int*>* #t7 = new col::_CompactLinkedHashSet::•<core::int*>();
+ } =>#t7;
static method iterablefun2() → FutureOr<core::Iterable<core::int*>*>*
return block {
- final core::Set<core::int*>* #t18 = new col::_CompactLinkedHashSet::•<core::int*>();
- } =>#t18;
+ final core::Set<core::int*>* #t8 = new col::_CompactLinkedHashSet::•<core::int*>();
+ } =>#t8;
static method lhsfun2() → FutureOr<col::LinkedHashSet<core::int*>*>*
return invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule.dart:40:43: Error: A value of type 'Set<dynamic>' can't be assigned to a variable of type 'FutureOr<LinkedHashSet<int>>'.
- 'Set' is from 'dart:core'.
- 'LinkedHashSet' is from 'dart:collection'.
FutureOr<LinkedHashSet<int>> lhsfun2() => {};
^" in ( block {
- final core::Set<dynamic>* #t19 = new col::_CompactLinkedHashSet::•<dynamic>();
- } =>#t19) as{TypeError} FutureOr<col::LinkedHashSet<core::int*>*>*;
+ final core::Set<dynamic>* #t9 = new col::_CompactLinkedHashSet::•<dynamic>();
+ } =>#t9) as{TypeError} FutureOr<col::LinkedHashSet<core::int*>*>*;
static method lhmfun2() → FutureOr<col::LinkedHashMap<core::int*, core::bool*>*>*
return invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule.dart:41:49: Error: A value of type 'Map<dynamic, dynamic>' can't be assigned to a variable of type 'FutureOr<LinkedHashMap<int, bool>>'.
- 'Map' is from 'dart:core'.
diff --git a/pkg/front_end/testcases/set_literals/disambiguation_rule2.dart.weak.transformed.expect b/pkg/front_end/testcases/set_literals/disambiguation_rule2.dart.weak.transformed.expect
index 621dcc5..2fa022c 100644
--- a/pkg/front_end/testcases/set_literals/disambiguation_rule2.dart.weak.transformed.expect
+++ b/pkg/front_end/testcases/set_literals/disambiguation_rule2.dart.weak.transformed.expect
@@ -41,248 +41,88 @@
// ^
//
import self as self;
-import "dart:async" as asy;
import "dart:core" as core;
import "dart:collection" as col;
-import "dart:_internal" as _in;
+import "dart:async" as asy;
import "dart:async" show FutureOr;
import "dart:collection" show LinkedHashMap, LinkedHashSet;
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- core::Map<core::int, core::bool> m = <core::int, core::bool>{};
- core::Set<core::int> s = block {
- final core::Set<core::int> #t1 = new col::_CompactLinkedHashSet::•<core::int>();
- } =>#t1;
- core::Iterable<core::int> i = block {
- final core::Set<core::int> #t2 = new col::_CompactLinkedHashSet::•<core::int>();
- } =>#t2;
- col::LinkedHashSet<core::int> lhs = invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule2.dart:13:28: Error: A value of type 'Set<dynamic>' can't be assigned to a variable of type 'LinkedHashSet<int>'.
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ core::Map<core::int, core::bool> m = <core::int, core::bool>{};
+ core::Set<core::int> s = block {
+ final core::Set<core::int> #t1 = new col::_CompactLinkedHashSet::•<core::int>();
+ } =>#t1;
+ core::Iterable<core::int> i = block {
+ final core::Set<core::int> #t2 = new col::_CompactLinkedHashSet::•<core::int>();
+ } =>#t2;
+ col::LinkedHashSet<core::int> lhs = invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule2.dart:13:28: Error: A value of type 'Set<dynamic>' can't be assigned to a variable of type 'LinkedHashSet<int>'.
- 'Set' is from 'dart:core'.
- 'LinkedHashSet' is from 'dart:collection'.
LinkedHashSet<int> lhs = {};
^" in ( block {
- final core::Set<dynamic> #t3 = new col::_CompactLinkedHashSet::•<dynamic>();
- } =>#t3) as{TypeError,ForNonNullableByDefault} col::LinkedHashSet<core::int>;
- col::LinkedHashMap<core::int, core::bool> lhm = invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule2.dart:14:34: Error: A value of type 'Map<dynamic, dynamic>' can't be assigned to a variable of type 'LinkedHashMap<int, bool>'.
+ final core::Set<dynamic> #t3 = new col::_CompactLinkedHashSet::•<dynamic>();
+ } =>#t3) as{TypeError,ForNonNullableByDefault} col::LinkedHashSet<core::int>;
+ col::LinkedHashMap<core::int, core::bool> lhm = invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule2.dart:14:34: Error: A value of type 'Map<dynamic, dynamic>' can't be assigned to a variable of type 'LinkedHashMap<int, bool>'.
- 'Map' is from 'dart:core'.
- 'LinkedHashMap' is from 'dart:collection'.
LinkedHashMap<int, bool> lhm = {};
^" in <dynamic, dynamic>{} as{TypeError,ForNonNullableByDefault} col::LinkedHashMap<core::int, core::bool>;
- [yield] let dynamic #t4 = asy::_awaitHelper(self::mapfun(), :async_op_then, :async_op_error) in null;
- core::Map<core::int, core::bool> fm = _in::unsafeCast<core::Map<core::int, core::bool>>(:result_or_exception);
- [yield] let dynamic #t5 = asy::_awaitHelper(self::setfun(), :async_op_then, :async_op_error) in null;
- core::Set<core::int> fs = _in::unsafeCast<core::Set<core::int>>(:result_or_exception);
- [yield] let dynamic #t6 = asy::_awaitHelper(self::iterablefun(), :async_op_then, :async_op_error) in null;
- core::Iterable<core::int> fi = _in::unsafeCast<core::Iterable<core::int>>(:result_or_exception);
- [yield] let dynamic #t7 = asy::_awaitHelper(self::lhsfun(), :async_op_then, :async_op_error) in null;
- col::LinkedHashSet<core::int> flhs = _in::unsafeCast<col::LinkedHashSet<core::int>>(:result_or_exception);
- [yield] let dynamic #t8 = asy::_awaitHelper(self::lhmfun(), :async_op_then, :async_op_error) in null;
- col::LinkedHashMap<core::int, core::bool> flhm = _in::unsafeCast<col::LinkedHashMap<core::int, core::bool>>(:result_or_exception);
- [yield] let dynamic #t9 = asy::_awaitHelper(self::mapfun2(), :async_op_then, :async_op_error) in null;
- core::Map<core::int, core::bool> fm2 = _in::unsafeCast<core::Map<core::int, core::bool>>(:result_or_exception);
- [yield] let dynamic #t10 = asy::_awaitHelper(self::setfun2(), :async_op_then, :async_op_error) in null;
- core::Set<core::int> fs2 = _in::unsafeCast<core::Set<core::int>>(:result_or_exception);
- [yield] let dynamic #t11 = asy::_awaitHelper(self::iterablefun2(), :async_op_then, :async_op_error) in null;
- core::Iterable<core::int> fi2 = _in::unsafeCast<core::Iterable<core::int>>(:result_or_exception);
- [yield] let dynamic #t12 = asy::_awaitHelper(self::lhsfun2(), :async_op_then, :async_op_error) in null;
- col::LinkedHashSet<core::int> flhs2 = _in::unsafeCast<col::LinkedHashSet<core::int>>(:result_or_exception);
- [yield] let dynamic #t13 = asy::_awaitHelper(self::lhmfun2(), :async_op_then, :async_op_error) in null;
- col::LinkedHashMap<core::int, core::bool> flhm2 = _in::unsafeCast<col::LinkedHashMap<core::int, core::bool>>(:result_or_exception);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ core::Map<core::int, core::bool> fm = await self::mapfun();
+ core::Set<core::int> fs = await self::setfun();
+ core::Iterable<core::int> fi = await self::iterablefun();
+ col::LinkedHashSet<core::int> flhs = await self::lhsfun();
+ col::LinkedHashMap<core::int, core::bool> flhm = await self::lhmfun();
+ core::Map<core::int, core::bool> fm2 = await self::mapfun2();
+ core::Set<core::int> fs2 = await self::setfun2();
+ core::Iterable<core::int> fi2 = await self::iterablefun2();
+ col::LinkedHashSet<core::int> flhs2 = await self::lhsfun2();
+ col::LinkedHashMap<core::int, core::bool> flhm2 = await self::lhmfun2();
}
-static method mapfun() → asy::Future<core::Map<core::int, core::bool>> /* futureValueType= core::Map<core::int, core::bool> */ /* originally async */ {
- final asy::_Future<core::Map<core::int, core::bool>> :async_future = new asy::_Future::•<core::Map<core::int, core::bool>>();
- core::bool* :is_sync = false;
- core::Map<core::int, core::bool>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = <core::int, core::bool>{};
- break #L2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method setfun() → asy::Future<core::Set<core::int>> /* futureValueType= core::Set<core::int> */ /* originally async */ {
- final asy::_Future<core::Set<core::int>> :async_future = new asy::_Future::•<core::Set<core::int>>();
- core::bool* :is_sync = false;
- core::Set<core::int>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- :return_value = block {
- final core::Set<core::int> #t14 = new col::_CompactLinkedHashSet::•<core::int>();
- } =>#t14;
- break #L3;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method iterablefun() → asy::Future<core::Iterable<core::int>> /* futureValueType= core::Iterable<core::int> */ /* originally async */ {
- final asy::_Future<core::Iterable<core::int>> :async_future = new asy::_Future::•<core::Iterable<core::int>>();
- core::bool* :is_sync = false;
- core::Iterable<core::int>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- :return_value = block {
- final core::Set<core::int> #t15 = new col::_CompactLinkedHashSet::•<core::int>();
- } =>#t15;
- break #L4;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method lhsfun() → asy::Future<col::LinkedHashSet<core::int>> /* futureValueType= col::LinkedHashSet<core::int> */ /* originally async */ {
- final asy::_Future<col::LinkedHashSet<core::int>> :async_future = new asy::_Future::•<col::LinkedHashSet<core::int>>();
- core::bool* :is_sync = false;
- FutureOr<col::LinkedHashSet<core::int>>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- :return_value = invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule2.dart:32:46: Error: A value of type 'Set<dynamic>' can't be returned from an async function with return type 'Future<LinkedHashSet<int>>'.
+static method mapfun() → asy::Future<core::Map<core::int, core::bool>> async /* futureValueType= core::Map<core::int, core::bool> */
+ return <core::int, core::bool>{};
+static method setfun() → asy::Future<core::Set<core::int>> async /* futureValueType= core::Set<core::int> */
+ return block {
+ final core::Set<core::int> #t4 = new col::_CompactLinkedHashSet::•<core::int>();
+ } =>#t4;
+static method iterablefun() → asy::Future<core::Iterable<core::int>> async /* futureValueType= core::Iterable<core::int> */
+ return block {
+ final core::Set<core::int> #t5 = new col::_CompactLinkedHashSet::•<core::int>();
+ } =>#t5;
+static method lhsfun() → asy::Future<col::LinkedHashSet<core::int>> async /* futureValueType= col::LinkedHashSet<core::int> */
+ return invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule2.dart:32:46: Error: A value of type 'Set<dynamic>' can't be returned from an async function with return type 'Future<LinkedHashSet<int>>'.
- 'Set' is from 'dart:core'.
- 'Future' is from 'dart:async'.
- 'LinkedHashSet' is from 'dart:collection'.
Future<LinkedHashSet<int>> lhsfun() async => {};
^" in ( block {
- final core::Set<dynamic> #t16 = new col::_CompactLinkedHashSet::•<dynamic>();
- } =>#t16) as{TypeError,ForNonNullableByDefault} col::LinkedHashSet<core::int>;
- break #L5;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method lhmfun() → asy::Future<col::LinkedHashMap<core::int, core::bool>> /* futureValueType= col::LinkedHashMap<core::int, core::bool> */ /* originally async */ {
- final asy::_Future<col::LinkedHashMap<core::int, core::bool>> :async_future = new asy::_Future::•<col::LinkedHashMap<core::int, core::bool>>();
- core::bool* :is_sync = false;
- FutureOr<col::LinkedHashMap<core::int, core::bool>>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L6:
- {
- :return_value = invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule2.dart:33:52: Error: A value of type 'Map<dynamic, dynamic>' can't be returned from an async function with return type 'Future<LinkedHashMap<int, bool>>'.
+ final core::Set<dynamic> #t6 = new col::_CompactLinkedHashSet::•<dynamic>();
+ } =>#t6) as{TypeError,ForNonNullableByDefault} col::LinkedHashSet<core::int>;
+static method lhmfun() → asy::Future<col::LinkedHashMap<core::int, core::bool>> async /* futureValueType= col::LinkedHashMap<core::int, core::bool> */
+ return invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule2.dart:33:52: Error: A value of type 'Map<dynamic, dynamic>' can't be returned from an async function with return type 'Future<LinkedHashMap<int, bool>>'.
- 'Map' is from 'dart:core'.
- 'Future' is from 'dart:async'.
- 'LinkedHashMap' is from 'dart:collection'.
Future<LinkedHashMap<int, bool>> lhmfun() async => {};
^" in <dynamic, dynamic>{} as{TypeError,ForNonNullableByDefault} col::LinkedHashMap<core::int, core::bool>;
- break #L6;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
static method mapfun2() → FutureOr<core::Map<core::int, core::bool>>
return <core::int, core::bool>{};
static method setfun2() → FutureOr<core::Set<core::int>>
return block {
- final core::Set<core::int> #t17 = new col::_CompactLinkedHashSet::•<core::int>();
- } =>#t17;
+ final core::Set<core::int> #t7 = new col::_CompactLinkedHashSet::•<core::int>();
+ } =>#t7;
static method iterablefun2() → FutureOr<core::Iterable<core::int>>
return block {
- final core::Set<core::int> #t18 = new col::_CompactLinkedHashSet::•<core::int>();
- } =>#t18;
+ final core::Set<core::int> #t8 = new col::_CompactLinkedHashSet::•<core::int>();
+ } =>#t8;
static method lhsfun2() → FutureOr<col::LinkedHashSet<core::int>>
return invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule2.dart:38:43: Error: A value of type 'Set<dynamic>' can't be returned from a function with return type 'FutureOr<LinkedHashSet<int>>'.
- 'Set' is from 'dart:core'.
- 'LinkedHashSet' is from 'dart:collection'.
FutureOr<LinkedHashSet<int>> lhsfun2() => {};
^" in ( block {
- final core::Set<dynamic> #t19 = new col::_CompactLinkedHashSet::•<dynamic>();
- } =>#t19) as{TypeError,ForNonNullableByDefault} FutureOr<col::LinkedHashSet<core::int>>;
+ final core::Set<dynamic> #t9 = new col::_CompactLinkedHashSet::•<dynamic>();
+ } =>#t9) as{TypeError,ForNonNullableByDefault} FutureOr<col::LinkedHashSet<core::int>>;
static method lhmfun2() → FutureOr<col::LinkedHashMap<core::int, core::bool>>
return invalid-expression "pkg/front_end/testcases/set_literals/disambiguation_rule2.dart:39:49: Error: A value of type 'Map<dynamic, dynamic>' can't be returned from a function with return type 'FutureOr<LinkedHashMap<int, bool>>'.
- 'Map' is from 'dart:core'.
diff --git a/pkg/frontend_server/lib/frontend_server.dart b/pkg/frontend_server/lib/frontend_server.dart
index b2489b6..8bd5bbb 100644
--- a/pkg/frontend_server/lib/frontend_server.dart
+++ b/pkg/frontend_server/lib/frontend_server.dart
@@ -58,7 +58,7 @@
'supported when --aot and --minimal-kernel are not used.',
defaultsTo: null)
..addFlag('compact-async',
- help: 'Enable new compact async/await implementation.', defaultsTo: null)
+ help: 'Enable new compact async/await implementation.', defaultsTo: true)
..addFlag('tfa',
help:
'Enable global type flow analysis and related transformations in AOT mode.',
@@ -541,7 +541,7 @@
nullSafety: compilerOptions.nnbdMode == NnbdMode.Strong,
supportMirrors: options['support-mirrors'] ??
!(options['aot'] || options['minimal-kernel']),
- compactAsync: options['compact-async'] ?? options['aot'],
+ compactAsync: options['compact-async'],
);
if (compilerOptions.target == null) {
print('Failed to create front-end target ${options['target']}.');
diff --git a/pkg/kernel/lib/target/targets.dart b/pkg/kernel/lib/target/targets.dart
index 90f85e8..707efa0 100644
--- a/pkg/kernel/lib/target/targets.dart
+++ b/pkg/kernel/lib/target/targets.dart
@@ -22,7 +22,7 @@
{this.trackWidgetCreation = false,
this.enableNullSafety = false,
this.supportMirrors = true,
- this.compactAsync = false});
+ this.compactAsync = true});
@override
bool operator ==(other) {
diff --git a/pkg/vm/lib/kernel_front_end.dart b/pkg/vm/lib/kernel_front_end.dart
index 22c471fb..03ffe27 100644
--- a/pkg/vm/lib/kernel_front_end.dart
+++ b/pkg/vm/lib/kernel_front_end.dart
@@ -81,7 +81,7 @@
'supported when --aot and --minimal-kernel are not used.',
defaultsTo: null);
args.addFlag('compact-async',
- help: 'Enable new compact async/await implementation.', defaultsTo: null);
+ help: 'Enable new compact async/await implementation.', defaultsTo: true);
args.addOption('depfile', help: 'Path to output Ninja depfile');
args.addOption('from-dill',
help: 'Read existing dill file instead of compiling from sources',
@@ -202,7 +202,7 @@
final String? manifestFilename = options['manifest'];
final String? dataDir = options['component-name'] ?? options['data-dir'];
final bool? supportMirrors = options['support-mirrors'];
- final bool compactAsync = options['compact-async'] ?? aot;
+ final bool compactAsync = options['compact-async'];
final bool minimalKernel = options['minimal-kernel'];
final bool treeShakeWriteOnlyFields = options['tree-shake-write-only-fields'];
@@ -617,7 +617,7 @@
{bool trackWidgetCreation = false,
bool nullSafety = false,
bool supportMirrors = true,
- bool compactAsync = false}) {
+ bool compactAsync = true}) {
// Make sure VM-specific targets are available.
installAdditionalTargets();
diff --git a/pkg/vm/testcases/transformations/deferred_loading/main.dart.expect b/pkg/vm/testcases/transformations/deferred_loading/main.dart.expect
index ec6468f..e0c0bdd 100644
--- a/pkg/vm/testcases/transformations/deferred_loading/main.dart.expect
+++ b/pkg/vm/testcases/transformations/deferred_loading/main.dart.expect
@@ -45,62 +45,16 @@
import "#pkg/vm/testcases/transformations/deferred_loading/a.dart" as a;
- static method j() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final dart.async::_Future<dynamic> :async_future = new dart.async::_Future::•<dynamic>();
- dart.core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (dart.core::Object, dart.core::StackTrace) → dynamic :async_op_error;
- dart.core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- dart.core::print("J");
- }
- dart.async::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ static method j() → dynamic async /* futureValueType= dynamic */ {
+ dart.core::print("J");
}
}
library h from "#pkg/vm/testcases/transformations/deferred_loading/h.dart" as h {
import "#pkg/vm/testcases/transformations/deferred_loading/g.dart" as g;
- static method h() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final dart.async::_Future<dynamic> :async_future = new dart.async::_Future::•<dynamic>();
- dart.core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (dart.core::Object, dart.core::StackTrace) → dynamic :async_op_error;
- dart.core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- dart.core::print("H");
- }
- dart.async::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ static method h() → dynamic async /* futureValueType= dynamic */ {
+ dart.core::print("H");
}
}
library i from "#pkg/vm/testcases/transformations/deferred_loading/i.dart" as i {
@@ -108,67 +62,18 @@
import "#pkg/vm/testcases/transformations/deferred_loading/j.dart" deferred as j;
import "#pkg/vm/testcases/transformations/deferred_loading/b.dart" as b;
- static method i() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final dart.async::_Future<dynamic> :async_future = new dart.async::_Future::•<dynamic>();
- dart.core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (dart.core::Object, dart.core::StackTrace) → dynamic :async_op_error;
- dart.core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- dart.core::print("I");
- [yield] let dynamic #t1 = dart.async::_awaitHelper(LoadLibrary(j), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- :return_value = let final dynamic #t2 = CheckLibraryIsLoaded(j) in j::j();
- break #L3;
- }
- dart.async::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ static method i() → dynamic async /* futureValueType= dynamic */ {
+ dart.core::print("I");
+ await LoadLibrary(j);
+ return let final dynamic #t1 = CheckLibraryIsLoaded(j) in j::j();
}
}
library g from "#pkg/vm/testcases/transformations/deferred_loading/g.dart" as g {
import "#pkg/vm/testcases/transformations/deferred_loading/h.dart" as h;
- static method g() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final dart.async::_Future<dynamic> :async_future = new dart.async::_Future::•<dynamic>();
- dart.core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (dart.core::Object, dart.core::StackTrace) → dynamic :async_op_error;
- dart.core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- dart.core::print("G");
- }
- dart.async::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ static method g() → dynamic async /* futureValueType= dynamic */ {
+ dart.core::print("G");
}
}
library f from "#pkg/vm/testcases/transformations/deferred_loading/f.dart" as f {
@@ -176,76 +81,22 @@
import "#pkg/vm/testcases/transformations/deferred_loading/g.dart" deferred as g;
import "#pkg/vm/testcases/transformations/deferred_loading/i.dart" deferred as i;
- static method f() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final dart.async::_Future<dynamic> :async_future = new dart.async::_Future::•<dynamic>();
- dart.core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (dart.core::Object, dart.core::StackTrace) → dynamic :async_op_error;
- dart.core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- dart.core::print("F");
- [yield] let dynamic #t3 = dart.async::_awaitHelper(LoadLibrary(g), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- :return_value = let final dynamic #t4 = CheckLibraryIsLoaded(g) in g::g();
- break #L5;
- [yield] let dynamic #t5 = dart.async::_awaitHelper(LoadLibrary(i), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- :return_value = let final dynamic #t6 = CheckLibraryIsLoaded(i) in i::i();
- break #L5;
- }
- dart.async::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ static method f() → dynamic async /* futureValueType= dynamic */ {
+ dart.core::print("F");
+ await LoadLibrary(g);
+ return let final dynamic #t2 = CheckLibraryIsLoaded(g) in g::g();
+ await LoadLibrary(i);
+ return let final dynamic #t3 = CheckLibraryIsLoaded(i) in i::i();
}
}
library e from "#pkg/vm/testcases/transformations/deferred_loading/e.dart" as e {
import "#pkg/vm/testcases/transformations/deferred_loading/g.dart" deferred as g;
- static method e() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final dart.async::_Future<dynamic> :async_future = new dart.async::_Future::•<dynamic>();
- dart.core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (dart.core::Object, dart.core::StackTrace) → dynamic :async_op_error;
- dart.core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L6:
- {
- dart.core::print("E");
- [yield] let dynamic #t7 = dart.async::_awaitHelper(LoadLibrary(g), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- :return_value = let final dynamic #t8 = CheckLibraryIsLoaded(g) in g::g();
- break #L6;
- }
- dart.async::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ static method e() → dynamic async /* futureValueType= dynamic */ {
+ dart.core::print("E");
+ await LoadLibrary(g);
+ return let final dynamic #t4 = CheckLibraryIsLoaded(g) in g::g();
}
}
library c from "#pkg/vm/testcases/transformations/deferred_loading/c.dart" as c {
@@ -253,138 +104,38 @@
import "#pkg/vm/testcases/transformations/deferred_loading/b.dart" as b;
import "#pkg/vm/testcases/transformations/deferred_loading/f.dart" deferred as f;
- static method c() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final dart.async::_Future<dynamic> :async_future = new dart.async::_Future::•<dynamic>();
- dart.core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (dart.core::Object, dart.core::StackTrace) → dynamic :async_op_error;
- dart.core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L7:
- {
- dart.core::print("C");
- [yield] let dynamic #t9 = dart.async::_awaitHelper(LoadLibrary(f), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- :return_value = let final dynamic #t10 = CheckLibraryIsLoaded(f) in f::f();
- break #L7;
- }
- dart.async::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ static method c() → dynamic async /* futureValueType= dynamic */ {
+ dart.core::print("C");
+ await LoadLibrary(f);
+ return let final dynamic #t5 = CheckLibraryIsLoaded(f) in f::f();
}
}
library d from "#pkg/vm/testcases/transformations/deferred_loading/d.dart" as d {
import "#pkg/vm/testcases/transformations/deferred_loading/e.dart" as e;
- static method d() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final dart.async::_Future<dynamic> :async_future = new dart.async::_Future::•<dynamic>();
- dart.core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (dart.core::Object, dart.core::StackTrace) → dynamic :async_op_error;
- dart.core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L8:
- {
- dart.core::print("D");
- :return_value = e::e();
- break #L8;
- }
- dart.async::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ static method d() → dynamic async /* futureValueType= dynamic */ {
+ dart.core::print("D");
+ return e::e();
}
}
library b from "#pkg/vm/testcases/transformations/deferred_loading/b.dart" as b {
import "#pkg/vm/testcases/transformations/deferred_loading/c.dart" as c;
- static method b() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final dart.async::_Future<dynamic> :async_future = new dart.async::_Future::•<dynamic>();
- dart.core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (dart.core::Object, dart.core::StackTrace) → dynamic :async_op_error;
- dart.core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L9:
- {
- dart.core::print("B");
- :return_value = c::c();
- break #L9;
- }
- dart.async::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ static method b() → dynamic async /* futureValueType= dynamic */ {
+ dart.core::print("B");
+ return c::c();
}
}
library a from "#pkg/vm/testcases/transformations/deferred_loading/a.dart" as a {
import "#pkg/vm/testcases/transformations/deferred_loading/d.dart" deferred as d;
- static method a() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final dart.async::_Future<dynamic> :async_future = new dart.async::_Future::•<dynamic>();
- dart.core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (dart.core::Object, dart.core::StackTrace) → dynamic :async_op_error;
- dart.core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L10:
- {
- dart.core::print("A");
- [yield] let dynamic #t11 = dart.async::_awaitHelper(LoadLibrary(d), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- :return_value = let final dynamic #t12 = CheckLibraryIsLoaded(d) in d::d();
- break #L10;
- }
- dart.async::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ static method a() → dynamic async /* futureValueType= dynamic */ {
+ dart.core::print("A");
+ await LoadLibrary(d);
+ return let final dynamic #t6 = CheckLibraryIsLoaded(d) in d::d();
}
}
library #lib from "#lib" as #lib {
@@ -392,34 +143,8 @@
import "#pkg/vm/testcases/transformations/deferred_loading/a.dart";
import "#pkg/vm/testcases/transformations/deferred_loading/b.dart";
- static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final dart.async::_Future<dynamic> :async_future = new dart.async::_Future::•<dynamic>();
- dart.core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (dart.core::Object, dart.core::StackTrace) → dynamic :async_op_error;
- dart.core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L11:
- {
- [yield] let dynamic #t13 = dart.async::_awaitHelper(a::a(), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- [yield] let dynamic #t14 = dart.async::_awaitHelper(b::b(), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
- dart.async::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, dart.core::StackTrace stack_trace) {
- dart.async::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = dart.async::_asyncThenWrapperHelper(:async_op);
- :async_op_error = dart.async::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ static method main() → dynamic async /* futureValueType= dynamic */ {
+ await a::a();
+ await b::b();
}
}
diff --git a/pkg/vm/testcases/transformations/ffi/finalizable_async.dart.expect b/pkg/vm/testcases/transformations/ffi/finalizable_async.dart.expect
index 2adb29e..2039db0 100644
--- a/pkg/vm/testcases/transformations/ffi/finalizable_async.dart.expect
+++ b/pkg/vm/testcases/transformations/ffi/finalizable_async.dart.expect
@@ -11,70 +11,20 @@
synthetic constructor •() → self::MyFinalizable
: super core::Object::•()
;
- method use() → asy::Future<core::int> /* futureValueType= core::int */ /* originally async */ {
- final asy::_Future<core::int> :async_future = new asy::_Future::•<core::int>();
- core::bool* :is_sync = false;
- FutureOr<core::int>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = block {
- final asy::Future<core::int> :expressionValueWrappedFinalizable = self::doSomething();
- _in::reachabilityFence(this);
- } =>:expressionValueWrappedFinalizable;
- break #L1;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ method use() → asy::Future<core::int> async /* futureValueType= core::int */ {
+ return block {
+ final asy::Future<core::int> :expressionValueWrappedFinalizable = self::doSomething();
+ _in::reachabilityFence(this);
+ } =>:expressionValueWrappedFinalizable;
}
- method use2() → asy::Future<core::int> /* futureValueType= core::int */ /* originally async */ {
- final asy::_Future<core::int> :async_future = new asy::_Future::•<core::int>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper( block {
- final asy::Future<core::int> :expressionValueWrappedFinalizable = self::doSomething();
- _in::reachabilityFence(this);
- } =>:expressionValueWrappedFinalizable, :async_op_then, :async_op_error) in null;
- final core::int :expressionValueWrappedFinalizable = _in::unsafeCast<core::int>(:result_or_exception);
- :return_value = block {
- _in::reachabilityFence(this);
- } =>:expressionValueWrappedFinalizable;
- break #L2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ method use2() → asy::Future<core::int> async /* futureValueType= core::int */ {
+ return block {
+ final core::int :expressionValueWrappedFinalizable = await block {
+ final asy::Future<core::int> :expressionValueWrappedFinalizable = self::doSomething();
+ _in::reachabilityFence(this);
+ } =>:expressionValueWrappedFinalizable;
+ _in::reachabilityFence(this);
+ } =>:expressionValueWrappedFinalizable;
}
method use3() → asy::Future<core::int> {
return block {
@@ -83,117 +33,39 @@
} =>:expressionValueWrappedFinalizable;
}
}
-static method doSomething() → asy::Future<core::int> /* futureValueType= core::int */ /* originally async */ {
- final asy::_Future<core::int> :async_future = new asy::_Future::•<core::int>();
- core::bool* :is_sync = false;
- core::int? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- :return_value = 3;
- break #L3;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method doSomething() → asy::Future<core::int> async /* futureValueType= core::int */
+ return 3;
+static method useFinalizableAsync(ffi::Finalizable finalizable) → asy::Future<core::int> async /* futureValueType= core::int */ {
+ await block {
+ final asy::Future<core::int> :expressionValueWrappedFinalizable = asy::Future::sync<core::int>(() → core::int => 6);
+ _in::reachabilityFence(finalizable);
+ } =>:expressionValueWrappedFinalizable;
+ final self::MyFinalizable finalizable2 = new self::MyFinalizable::•();
+ await block {
+ final asy::Future<core::int> :expressionValueWrappedFinalizable = asy::Future::sync<core::int>(() → core::int => 5);
+ _in::reachabilityFence(finalizable);
+ _in::reachabilityFence(finalizable2);
+ } =>:expressionValueWrappedFinalizable;
+ final self::MyFinalizable finalizable3 = new self::MyFinalizable::•();
+ await block {
+ final asy::Future<core::int> :expressionValueWrappedFinalizable = asy::Future::sync<core::int>(() → core::int => 4);
+ _in::reachabilityFence(finalizable);
+ _in::reachabilityFence(finalizable2);
+ _in::reachabilityFence(finalizable3);
+ } =>:expressionValueWrappedFinalizable;
+ return block {
+ final asy::Future<core::int> :expressionValueWrappedFinalizable = self::doSomething();
+ _in::reachabilityFence(finalizable);
+ _in::reachabilityFence(finalizable2);
+ _in::reachabilityFence(finalizable3);
+ } =>:expressionValueWrappedFinalizable;
}
-static method useFinalizableAsync(ffi::Finalizable finalizable) → asy::Future<core::int> /* futureValueType= core::int */ /* originally async */ {
- final asy::_Future<core::int> :async_future = new asy::_Future::•<core::int>();
- core::bool* :is_sync = false;
- FutureOr<core::int>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L4:
- {
- [yield] let dynamic #t2 = asy::_awaitHelper( block {
- final asy::Future<core::int> :expressionValueWrappedFinalizable = asy::Future::sync<core::int>(() → core::int => 6);
- _in::reachabilityFence(finalizable);
- } =>:expressionValueWrappedFinalizable, :async_op_then, :async_op_error) in null;
- _in::unsafeCast<core::int>(:result_or_exception);
- final self::MyFinalizable finalizable2 = new self::MyFinalizable::•();
- [yield] let dynamic #t3 = asy::_awaitHelper( block {
- final asy::Future<core::int> :expressionValueWrappedFinalizable = asy::Future::sync<core::int>(() → core::int => 5);
- _in::reachabilityFence(finalizable);
- _in::reachabilityFence(finalizable2);
- } =>:expressionValueWrappedFinalizable, :async_op_then, :async_op_error) in null;
- _in::unsafeCast<core::int>(:result_or_exception);
- final self::MyFinalizable finalizable3 = new self::MyFinalizable::•();
- [yield] let dynamic #t4 = asy::_awaitHelper( block {
- final asy::Future<core::int> :expressionValueWrappedFinalizable = asy::Future::sync<core::int>(() → core::int => 4);
- _in::reachabilityFence(finalizable);
- _in::reachabilityFence(finalizable2);
- _in::reachabilityFence(finalizable3);
- } =>:expressionValueWrappedFinalizable, :async_op_then, :async_op_error) in null;
- _in::unsafeCast<core::int>(:result_or_exception);
- :return_value = block {
- final asy::Future<core::int> :expressionValueWrappedFinalizable = self::doSomething();
- _in::reachabilityFence(finalizable);
- _in::reachabilityFence(finalizable2);
- _in::reachabilityFence(finalizable3);
- } =>:expressionValueWrappedFinalizable;
- break #L4;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method main() → void /* futureValueType= void */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L5:
- {
- final self::MyFinalizable finalizable = new self::MyFinalizable::•();
- final asy::Future<core::int> asyncResult = self::useFinalizableAsync(finalizable);
- [yield] let dynamic #t5 = asy::_awaitHelper( block {
- final asy::Future<core::int> :expressionValueWrappedFinalizable = asyncResult;
- _in::reachabilityFence(finalizable);
- } =>:expressionValueWrappedFinalizable, :async_op_then, :async_op_error) in null;
- core::print(_in::unsafeCast<core::int>(:result_or_exception));
- _in::reachabilityFence(finalizable);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method main() → void async /* futureValueType= void */ {
+ final self::MyFinalizable finalizable = new self::MyFinalizable::•();
+ final asy::Future<core::int> asyncResult = self::useFinalizableAsync(finalizable);
+ core::print(await block {
+ final asy::Future<core::int> :expressionValueWrappedFinalizable = asyncResult;
+ _in::reachabilityFence(finalizable);
+ } =>:expressionValueWrappedFinalizable);
+ _in::reachabilityFence(finalizable);
}
diff --git a/pkg/vm/testcases/transformations/ffi/finalizable_async_star.dart.expect b/pkg/vm/testcases/transformations/ffi/finalizable_async_star.dart.expect
index 74e5fe6..e3d7376 100644
--- a/pkg/vm/testcases/transformations/ffi/finalizable_async_star.dart.expect
+++ b/pkg/vm/testcases/transformations/ffi/finalizable_async_star.dart.expect
@@ -14,128 +14,58 @@
}
static method doSomething() → core::int
return 3;
-static method useFinalizableAsyncStar(ffi::Finalizable finalizable) → asy::Stream<core::int> /* originally async* */ {
- asy::_AsyncStarStreamController<core::int>? :controller;
- dynamic :controller_stream;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try
- try {
- #L1:
- {
- final self::MyFinalizable finalizable2 = new self::MyFinalizable::•();
- if([@vm.call-site-attributes.metadata=receiverType:dart.async::_AsyncStarStreamController<dart.core::int>?] :controller.{asy::_AsyncStarStreamController::add}( block {
- final core::int :expressionValueWrappedFinalizable = self::doSomething();
- _in::reachabilityFence(finalizable);
- _in::reachabilityFence(finalizable2);
- } =>:expressionValueWrappedFinalizable){(core::int) → core::bool})
- return null;
- else
- [yield] null;
- final self::MyFinalizable finalizable3 = new self::MyFinalizable::•();
- [yield] let dynamic #t1 = asy::_awaitHelper( block {
- final asy::Future<core::int> :expressionValueWrappedFinalizable = asy::Future::sync<core::int>(() → core::int => 3);
- _in::reachabilityFence(finalizable);
- _in::reachabilityFence(finalizable2);
- _in::reachabilityFence(finalizable3);
- } =>:expressionValueWrappedFinalizable, :async_op_then, :async_op_error) in null;
- _in::unsafeCast<core::int>(:result_or_exception);
- final self::MyFinalizable finalizable4 = new self::MyFinalizable::•();
- if(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 4) {
- {
- _in::reachabilityFence(finalizable);
- _in::reachabilityFence(finalizable2);
- _in::reachabilityFence(finalizable3);
- _in::reachabilityFence(finalizable4);
- break #L1;
- }
- }
- if([@vm.call-site-attributes.metadata=receiverType:dart.async::_AsyncStarStreamController<dart.core::int>?] :controller.{asy::_AsyncStarStreamController::add}( block {
- final core::int :expressionValueWrappedFinalizable = 5;
- _in::reachabilityFence(finalizable);
- _in::reachabilityFence(finalizable2);
- _in::reachabilityFence(finalizable3);
- _in::reachabilityFence(finalizable4);
- } =>:expressionValueWrappedFinalizable){(core::int) → core::bool})
- return null;
- else
- [yield] null;
- _in::reachabilityFence(finalizable2);
- _in::reachabilityFence(finalizable3);
- _in::reachabilityFence(finalizable4);
- _in::reachabilityFence(finalizable);
- }
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- :controller.{asy::_AsyncStarStreamController::addError}(exception, stack_trace){(core::Object, core::StackTrace) → void};
- }
- finally {
- :controller.{asy::_AsyncStarStreamController::close}(){() → dynamic};
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :controller = new asy::_AsyncStarStreamController::•<core::int>(:async_op);
- :controller_stream = :controller.{asy::_AsyncStarStreamController::stream}{asy::Stream<core::int>};
- return :controller_stream;
-}
-static method main() → void /* futureValueType= void */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :saved_try_context_var1;
- dynamic :exception0;
- dynamic :stack_trace0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- final self::MyFinalizable finalizable = new self::MyFinalizable::•();
- final asy::Stream<core::int> asyncStarResult = self::useFinalizableAsyncStar(finalizable);
- {
- asy::Stream<core::int> :stream = asyncStarResult;
- asy::_StreamIterator<core::int>? :for-iterator = new asy::_StreamIterator::•<core::int>(:stream);
- try
- #L3:
- while (true) {
- dynamic #t2 = asy::_asyncStarMoveNextHelper(:stream);
- [yield] let dynamic #t3 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}, :async_op_then, :async_op_error) in null;
- if(_in::unsafeCast<core::bool>(:result_or_exception)) {
- final core::int element = :for-iterator.{asy::_StreamIterator::current}{core::int};
- {
- core::print(element);
- }
- }
- else
- break #L3;
- }
- finally
- if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int>?} == null)) {
- [yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>}, :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
- }
- _in::reachabilityFence(finalizable);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
+static method useFinalizableAsyncStar(ffi::Finalizable finalizable) → asy::Stream<core::int> async* {
+ final self::MyFinalizable finalizable2 = new self::MyFinalizable::•();
+ yield block {
+ final core::int :expressionValueWrappedFinalizable = self::doSomething();
+ _in::reachabilityFence(finalizable);
+ _in::reachabilityFence(finalizable2);
+ } =>:expressionValueWrappedFinalizable;
+ final self::MyFinalizable finalizable3 = new self::MyFinalizable::•();
+ await block {
+ final asy::Future<core::int> :expressionValueWrappedFinalizable = asy::Future::sync<core::int>(() → core::int => 3);
+ _in::reachabilityFence(finalizable);
+ _in::reachabilityFence(finalizable2);
+ _in::reachabilityFence(finalizable3);
+ } =>:expressionValueWrappedFinalizable;
+ final self::MyFinalizable finalizable4 = new self::MyFinalizable::•();
+ if(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch}{core::int} =={core::num::==}{(core::Object) → core::bool} 4) {
+ {
+ _in::reachabilityFence(finalizable);
+ _in::reachabilityFence(finalizable2);
+ _in::reachabilityFence(finalizable3);
+ _in::reachabilityFence(finalizable4);
return;
}
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+ }
+ yield block {
+ final core::int :expressionValueWrappedFinalizable = 5;
+ _in::reachabilityFence(finalizable);
+ _in::reachabilityFence(finalizable2);
+ _in::reachabilityFence(finalizable3);
+ _in::reachabilityFence(finalizable4);
+ } =>:expressionValueWrappedFinalizable;
+ _in::reachabilityFence(finalizable2);
+ _in::reachabilityFence(finalizable3);
+ _in::reachabilityFence(finalizable4);
+ _in::reachabilityFence(finalizable);
+}
+static method main() → void async /* futureValueType= void */ {
+ final self::MyFinalizable finalizable = new self::MyFinalizable::•();
+ final asy::Stream<core::int> asyncStarResult = self::useFinalizableAsyncStar(finalizable);
+ {
+ asy::Stream<core::int> :stream = asyncStarResult;
+ asy::_StreamIterator<core::int>? :for-iterator = new asy::_StreamIterator::•<core::int>(:stream);
+ try
+ while (let dynamic #t1 = asy::_asyncStarMoveNextHelper(:stream) in await :for-iterator.{asy::_StreamIterator::moveNext}(){() → asy::Future<core::bool>}) {
+ final core::int element = :for-iterator.{asy::_StreamIterator::current}{core::int};
+ {
+ core::print(element);
+ }
+ }
+ finally
+ if(!(:for-iterator.{asy::_StreamIterator::_subscription}{asy::StreamSubscription<core::int>?} == null))
+ await :for-iterator.{asy::_StreamIterator::cancel}(){() → asy::Future<dynamic>};
+ }
+ _in::reachabilityFence(finalizable);
}
diff --git a/pkg/vm/testcases/transformations/ffi/regress_49075.dart.expect b/pkg/vm/testcases/transformations/ffi/regress_49075.dart.expect
index 2974867..fb88d53 100644
--- a/pkg/vm/testcases/transformations/ffi/regress_49075.dart.expect
+++ b/pkg/vm/testcases/transformations/ffi/regress_49075.dart.expect
@@ -14,32 +14,7 @@
_in::reachabilityFence(this);
}
}
-static method main(core::List<core::String> arguments) → asy::Future<void> /* futureValueType= void */ /* originally async */ {
- final asy::_Future<void> :async_future = new asy::_Future::•<void>();
- core::bool* :is_sync = false;
- void :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- [yield] let dynamic #t1 = asy::_awaitHelper(new self::MyFinalizable::•(), :async_op_then, :async_op_error) in null;
- final self::MyFinalizable myFinalizable = _in::unsafeCast<self::MyFinalizable>(:result_or_exception);
- _in::reachabilityFence(myFinalizable);
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method main(core::List<core::String> arguments) → asy::Future<void> async /* futureValueType= void */ {
+ final self::MyFinalizable myFinalizable = await new self::MyFinalizable::•();
+ _in::reachabilityFence(myFinalizable);
}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/async_await.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/async_await.dart.expect
index 0d6b3b9..da9a9a2 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/async_await.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/async_await.dart.expect
@@ -7,33 +7,8 @@
synthetic constructor •() → self::A
: super core::Object::•()
;
-[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] method bar(dynamic x) → asy::Future<dynamic> /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- FutureOr<dynamic>? :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L1:
- {
- :return_value = [@vm.inferred-type.metadata=dart.core::Null? (value: null)] core::print(x);
- break #L1;
- }
- asy::_completeOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
- }
+[@vm.procedure-attributes.metadata=getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] method bar(dynamic x) → asy::Future<dynamic> async /* futureValueType= dynamic */
+ return core::print(x);
}
class B extends core::Object {
synthetic constructor •() → self::B
@@ -42,61 +17,8 @@
}
static method foo() → dynamic
return new self::A::•();
-static method baz() → asy::Future<dynamic> /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L2:
- {
- :return_value = new self::B::•();
- break #L2;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
-}
-static method main() → dynamic /* futureValueType= dynamic */ /* originally async */ {
- final asy::_Future<dynamic> :async_future = new asy::_Future::•<dynamic>();
- core::bool* :is_sync = false;
- dynamic :return_value;
- (dynamic) → dynamic :async_op_then;
- (core::Object, core::StackTrace) → dynamic :async_op_error;
- core::int :await_jump_var = 0;
- dynamic :await_ctx_var;
- dynamic :saved_try_context_var0;
- dynamic :async_temporary_0;
- function :async_op(dynamic :result_or_exception, dynamic :stack_trace) → dynamic yielding
- try {
- #L3:
- {
- :async_temporary_0 = [@vm.inferred-type.metadata=#lib::A] self::foo();
- [yield] let dynamic #t1 = asy::_awaitHelper([@vm.inferred-type.metadata=dart.async::_Future<dynamic>] self::baz(), :async_op_then, :async_op_error) in null;
- [yield] let dynamic #t2 = asy::_awaitHelper([@vm.direct-call.metadata=#lib::A.bar??] [@vm.inferred-type.metadata=dart.async::_Future<dynamic> (receiver not int)] :async_temporary_0{dynamic}.bar(:result_or_exception), :async_op_then, :async_op_error) in null;
- :result_or_exception;
- }
- asy::_completeWithNoFutureOnAsyncReturn(:async_future, :return_value, :is_sync);
- return;
- }
- on dynamic catch(dynamic exception, core::StackTrace stack_trace) {
- asy::_completeOnAsyncError(:async_future, exception, stack_trace, :is_sync);
- }
- :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
- :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
- :async_op(null, null){() → dynamic};
- :is_sync = true;
- return :async_future;
+static method baz() → asy::Future<dynamic> async /* futureValueType= dynamic */
+ return new self::B::•();
+static method main() → dynamic async /* futureValueType= dynamic */ {
+ await [@vm.direct-call.metadata=#lib::A.bar] [@vm.inferred-type.metadata=!? (receiver not int)] [@vm.inferred-type.metadata=#lib::A] self::foo(){dynamic}.bar(await self::baz());
}
diff --git a/pkg/vm_service/test/async_single_step_exception_test.dart b/pkg/vm_service/test/async_single_step_exception_test.dart
index 2e06ba7..3a093de 100644
--- a/pkg/vm_service/test/async_single_step_exception_test.dart
+++ b/pkg/vm_service/test/async_single_step_exception_test.dart
@@ -54,10 +54,6 @@
smartNext,
hasStoppedAtBreakpoint,
- stoppedAtLine(22), // } (weird dispatching)
- smartNext,
-
- hasStoppedAtBreakpoint,
stoppedAtLine(LINE_D), // await helper (weird dispatching)
smartNext,
diff --git a/pkg/vm_service/test/async_single_step_out_test.dart b/pkg/vm_service/test/async_single_step_out_test.dart
index 1db5d67..71f9517 100644
--- a/pkg/vm_service/test/async_single_step_out_test.dart
+++ b/pkg/vm_service/test/async_single_step_out_test.dart
@@ -44,14 +44,10 @@
stepInto, // exit helper via a single step.
hasStoppedAtBreakpoint,
- stoppedAtLine(20), // return null (weird dispatching)
- stepInto, // exit helper via a single step.
-
- hasStoppedAtBreakpoint,
- stoppedAtLine(25), // await helper (weird dispatching)
+ stoppedAtLine(LINE_D), // await helper
smartNext,
- hasStoppedAtBreakpoint, //19
+ hasStoppedAtBreakpoint,
stoppedAtLine(LINE_E), // arrive after the await.
resumeIsolate
];
diff --git a/pkg/vm_service/test/async_star_single_step_into_test.dart b/pkg/vm_service/test/async_star_single_step_into_test.dart
index bf5c964..be3eba7 100644
--- a/pkg/vm_service/test/async_star_single_step_into_test.dart
+++ b/pkg/vm_service/test/async_star_single_step_into_test.dart
@@ -8,12 +8,13 @@
import 'common/service_test_common.dart';
import 'common/test_helper.dart';
-const LINE_A = 19;
-const LINE_B = 20;
-const LINE_C = 24;
-const LINE_D = 28;
-const LINE_E = 34;
-const LINE_F = 35;
+const LINE_A = 20;
+const LINE_B = 21;
+const LINE_C = 25;
+const LINE_D = 29;
+const LINE_E = 35;
+const LINE_F = 36;
+const LINE_G = 27;
foobar() async* {
yield 1; // LINE_A.
@@ -23,7 +24,7 @@
helper() async {
print('helper'); // LINE_C.
// ignore: unused_local_variable
- await for (var i in foobar()) {
+ await for (var i in foobar()) /* LINE_G. */ {
debugger();
print('loop'); // LINE_D.
}
@@ -50,6 +51,11 @@
stepOver, // print.
hasStoppedAtBreakpoint,
+ stoppedAtLine(LINE_G), // foobar()
+ stepInto,
+
+ hasStoppedAtBreakpoint,
+ stoppedAtLine(LINE_G), // await for
stepInto,
hasStoppedAtBreakpoint,
@@ -63,6 +69,7 @@
stepOver, // print.
hasStoppedAtBreakpoint,
+ stoppedAtLine(LINE_G),
stepInto,
hasStoppedAtBreakpoint,
diff --git a/pkg/vm_service/test/async_star_step_out_test.dart b/pkg/vm_service/test/async_star_step_out_test.dart
index 14a05f9..41d387f 100644
--- a/pkg/vm_service/test/async_star_step_out_test.dart
+++ b/pkg/vm_service/test/async_star_step_out_test.dart
@@ -54,6 +54,11 @@
stepOver, // print.
hasStoppedAtBreakpoint,
+ stoppedAtLine(LINE_H), // foobar().
+ stepInto,
+
+ hasStoppedAtBreakpoint,
+ stoppedAtLine(LINE_H), // await for.
stepInto,
hasStoppedAtBreakpoint,
diff --git a/pkg/vm_service/test/awaiter_async_stack_contents_2_test.dart b/pkg/vm_service/test/awaiter_async_stack_contents_2_test.dart
index 88d17d0a..5cd7443 100644
--- a/pkg/vm_service/test/awaiter_async_stack_contents_2_test.dart
+++ b/pkg/vm_service/test/awaiter_async_stack_contents_2_test.dart
@@ -49,9 +49,9 @@
List<Frame> awaiterFrames = stack.awaiterFrames!;
expect(awaiterFrames.length, greaterThanOrEqualTo(2));
// Awaiter frame.
- expect(awaiterFrames[0].function!.owner.name, 'foobar');
+ expect(awaiterFrames[0].function!.name, 'foobar');
// Awaiter frame.
- expect(awaiterFrames[1].function!.owner.name, 'helper');
+ expect(awaiterFrames[1].function!.name, 'helper');
},
];
diff --git a/pkg/vm_service/test/awaiter_async_stack_contents_test.dart b/pkg/vm_service/test/awaiter_async_stack_contents_test.dart
index 0fea350..ac8ab8c 100644
--- a/pkg/vm_service/test/awaiter_async_stack_contents_test.dart
+++ b/pkg/vm_service/test/awaiter_async_stack_contents_test.dart
@@ -56,9 +56,9 @@
expect(awaiterFrames.length, greaterThanOrEqualTo(2));
// Awaiter frame.
- expect(await awaiterFrames[0].function!.owner.name, 'foobar');
+ expect(await awaiterFrames[0].function!.name, 'foobar');
// Awaiter frame.
- expect(await awaiterFrames[1].function!.owner.name, 'helper');
+ expect(await awaiterFrames[1].function!.name, 'helper');
// "helper" is not await'ed.
},
];
diff --git a/pkg/vm_service/test/causal_async_stack_contents_test.dart b/pkg/vm_service/test/causal_async_stack_contents_test.dart
index b634f10..b28ece5 100644
--- a/pkg/vm_service/test/causal_async_stack_contents_test.dart
+++ b/pkg/vm_service/test/causal_async_stack_contents_test.dart
@@ -48,7 +48,7 @@
// Has causal frames (we are inside an async function)
expect(stack.asyncCausalFrames, isNotNull);
expect(
- stack.asyncCausalFrames![0].function!.owner.name,
+ stack.asyncCausalFrames![0].function!.name,
contains('helper'),
);
// "helper" is not await'ed.
@@ -62,7 +62,7 @@
expect(stack.asyncCausalFrames, isNotNull);
final asyncStack = stack.asyncCausalFrames!;
expect(asyncStack[0].function!.name, contains('foobar'));
- expect(asyncStack[1].function!.owner.name, contains('helper'));
+ expect(asyncStack[1].function!.name, contains('helper'));
// "helper" is not await'ed.
},
];
diff --git a/pkg/vm_service/test/causal_async_star_stack_contents_test.dart b/pkg/vm_service/test/causal_async_star_stack_contents_test.dart
index 4795850..80f0a2d 100644
--- a/pkg/vm_service/test/causal_async_star_stack_contents_test.dart
+++ b/pkg/vm_service/test/causal_async_star_stack_contents_test.dart
@@ -45,7 +45,7 @@
expect(stack.asyncCausalFrames, isNotNull);
final asyncStack = stack.asyncCausalFrames!;
expect(asyncStack.length, greaterThanOrEqualTo(1));
- expect(asyncStack[0].function!.owner.name, contains('helper'));
+ expect(asyncStack[0].function!.name, contains('helper'));
// helper isn't awaited.
},
resumeIsolate,
@@ -57,9 +57,9 @@
expect(stack.asyncCausalFrames, isNotNull);
final asyncStack = stack.asyncCausalFrames!;
expect(asyncStack.length, greaterThanOrEqualTo(3));
- expect(asyncStack[0].function!.owner.name, contains('foobar'));
+ expect(asyncStack[0].function!.name, contains('foobar'));
expect(asyncStack[1].kind, equals(FrameKind.kAsyncSuspensionMarker));
- expect(asyncStack[2].function!.owner.name, contains('helper'));
+ expect(asyncStack[2].function!.name, contains('helper'));
expect(asyncStack[3].kind, equals(FrameKind.kAsyncSuspensionMarker));
},
resumeIsolate,
@@ -73,13 +73,13 @@
expect(asyncStack.length, greaterThanOrEqualTo(4));
final script = await service.getObject(
isolateRef.id!, asyncStack[0].location!.script!.id!) as Script;
- expect(asyncStack[0].function!.owner.name, contains('foobar'));
+ expect(asyncStack[0].function!.name, contains('foobar'));
expect(
script.getLineNumberFromTokenPos(asyncStack[0].location!.tokenPos!),
LINE_C,
);
expect(asyncStack[1].kind, equals(FrameKind.kAsyncSuspensionMarker));
- expect(asyncStack[2].function!.owner.name, contains('helper'));
+ expect(asyncStack[2].function!.name, contains('helper'));
expect(
script.getLineNumberFromTokenPos(asyncStack[2].location!.tokenPos!),
30,
diff --git a/pkg/vm_service/test/coverage_const_field_async_closure_test.dart b/pkg/vm_service/test/coverage_const_field_async_closure_test.dart
index 8a7430d..8bdb959 100644
--- a/pkg/vm_service/test/coverage_const_field_async_closure_test.dart
+++ b/pkg/vm_service/test/coverage_const_field_async_closure_test.dart
@@ -41,7 +41,7 @@
// Make sure we are in the right place.
expect(stack.frames!.length, greaterThanOrEqualTo(1));
// Async closure of testFunction
- expect(stack.frames![0].function!.name, 'async_op');
+ expect(stack.frames![0].function!.name, 'testFunction');
final rootLib =
await service.getObject(isolateId, isolate.rootLib!.id!) as Library;
diff --git a/pkg/vm_service/test/rpc_error_test.dart b/pkg/vm_service/test/rpc_error_test.dart
index 87e8776..67330c2 100644
--- a/pkg/vm_service/test/rpc_error_test.dart
+++ b/pkg/vm_service/test/rpc_error_test.dart
@@ -17,9 +17,9 @@
// Ensure stack trace contains actual invocation path.
final stack = st.toString().split('\n');
expect(stack.where((e) => e.contains('VmService.callMethod')).length, 1);
- // Call to vm.callMethod('foo') and the invocation of the test closure.
+ // Call to vm.callMethod('foo').
expect(
- stack.where((e) => e.contains('test/rpc_error_test.dart')).length, 2);
+ stack.where((e) => e.contains('test/rpc_error_test.dart')).length, 1);
} catch (e) {
fail('Expected RPCError, got $e');
}
diff --git a/pkg/vm_service/test/throws_sentinel_test.dart b/pkg/vm_service/test/throws_sentinel_test.dart
index b9242b3..bf52549 100644
--- a/pkg/vm_service/test/throws_sentinel_test.dart
+++ b/pkg/vm_service/test/throws_sentinel_test.dart
@@ -16,10 +16,10 @@
// Ensure stack trace contains actual invocation path.
final stack = st.toString().split('\n');
expect(stack.where((e) => e.contains('VmService.getIsolate')).length, 1);
- // Call to vm.getIsolate('isolates/12321') and the invocation of the test closure.
+ // Call to vm.getIsolate('isolates/12321').
expect(
stack.where((e) => e.contains('test/throws_sentinel_test.dart')).length,
- 2,
+ 1,
);
} catch (e) {
fail('Expected SentinelException, got $e');
diff --git a/runtime/observatory/tests/service/async_single_step_exception_test.dart b/runtime/observatory/tests/service/async_single_step_exception_test.dart
index 0fdc183..544ba6f 100644
--- a/runtime/observatory/tests/service/async_single_step_exception_test.dart
+++ b/runtime/observatory/tests/service/async_single_step_exception_test.dart
@@ -55,10 +55,6 @@
smartNext,
hasStoppedAtBreakpoint,
- stoppedAtLine(23), // } (weird dispatching)
- smartNext,
-
- hasStoppedAtBreakpoint,
stoppedAtLine(LINE_D), // await helper (weird dispatching)
smartNext,
diff --git a/runtime/observatory/tests/service/async_single_step_out_test.dart b/runtime/observatory/tests/service/async_single_step_out_test.dart
index cfeac6c..e93c274 100644
--- a/runtime/observatory/tests/service/async_single_step_out_test.dart
+++ b/runtime/observatory/tests/service/async_single_step_out_test.dart
@@ -44,11 +44,7 @@
stepInto, // exit helper via a single step.
hasStoppedAtBreakpoint,
- stoppedAtLine(20), // return null (weird dispatching)
- stepInto, // exit helper via a single step.
-
- hasStoppedAtBreakpoint,
- stoppedAtLine(25), // await helper (weird dispatching)
+ stoppedAtLine(LINE_D), // await helper
smartNext,
hasStoppedAtBreakpoint,
diff --git a/runtime/observatory/tests/service/async_star_single_step_into_test.dart b/runtime/observatory/tests/service/async_star_single_step_into_test.dart
index 0d99fd5..ac8e6ba 100644
--- a/runtime/observatory/tests/service/async_star_single_step_into_test.dart
+++ b/runtime/observatory/tests/service/async_star_single_step_into_test.dart
@@ -8,12 +8,13 @@
import 'service_test_common.dart';
import 'test_helper.dart';
-const LINE_A = 19;
-const LINE_B = 20;
-const LINE_C = 24;
-const LINE_D = 27;
-const LINE_E = 33;
-const LINE_F = 34;
+const LINE_A = 20;
+const LINE_B = 21;
+const LINE_C = 25;
+const LINE_D = 28;
+const LINE_E = 34;
+const LINE_F = 35;
+const LINE_G = 26;
foobar() async* {
yield 1; // LINE_A.
@@ -22,7 +23,7 @@
helper() async {
print('helper'); // LINE_C.
- await for (var i in foobar()) {
+ await for (var i in foobar()) /* LINE_G. */ {
debugger();
print('loop'); // LINE_D.
}
@@ -49,6 +50,11 @@
stepOver, // print.
hasStoppedAtBreakpoint,
+ stoppedAtLine(LINE_G), // foobar()
+ stepInto,
+
+ hasStoppedAtBreakpoint,
+ stoppedAtLine(LINE_G), // await for
stepInto,
hasStoppedAtBreakpoint,
@@ -62,6 +68,7 @@
stepOver, // print.
hasStoppedAtBreakpoint,
+ stoppedAtLine(LINE_G),
stepInto,
hasStoppedAtBreakpoint,
diff --git a/runtime/observatory/tests/service/async_star_step_out_test.dart b/runtime/observatory/tests/service/async_star_step_out_test.dart
index 95ca280..6e73174 100644
--- a/runtime/observatory/tests/service/async_star_step_out_test.dart
+++ b/runtime/observatory/tests/service/async_star_step_out_test.dart
@@ -53,6 +53,11 @@
stepOver, // print.
hasStoppedAtBreakpoint,
+ stoppedAtLine(LINE_H), // foobar().
+ stepInto,
+
+ hasStoppedAtBreakpoint,
+ stoppedAtLine(LINE_H), // await for.
stepInto,
hasStoppedAtBreakpoint,
diff --git a/runtime/observatory/tests/service/coverage_const_field_async_closure_test.dart b/runtime/observatory/tests/service/coverage_const_field_async_closure_test.dart
index 957251b..d3faadb 100644
--- a/runtime/observatory/tests/service/coverage_const_field_async_closure_test.dart
+++ b/runtime/observatory/tests/service/coverage_const_field_async_closure_test.dart
@@ -36,8 +36,7 @@
// Make sure we are in the right place.
expect(stack.type, 'Stack');
expect(stack['frames'].length, greaterThanOrEqualTo(1));
- // Async closure of testFunction
- expect(stack['frames'][0].function.name, 'async_op');
+ expect(stack['frames'][0].function.name, 'testFunction');
var root = isolate.rootLibrary;
await root.load();
diff --git a/runtime/observatory/tests/service/get_source_report_test.dart b/runtime/observatory/tests/service/get_source_report_test.dart
index a1d5206..7c87aa6 100644
--- a/runtime/observatory/tests/service/get_source_report_test.dart
+++ b/runtime/observatory/tests/service/get_source_report_test.dart
@@ -91,7 +91,7 @@
final numRanges = coverage['ranges'].length;
expect(coverage['type'], equals('SourceReport'));
- expect(numRanges, equals(11));
+ expect(numRanges, greaterThanOrEqualTo(10));
expect(coverage['ranges'][0], equals(expectedRange));
expect(coverage['scripts'].length, 1);
expect(
@@ -106,7 +106,7 @@
};
coverage = await isolate.invokeRpcNoUpgrade('getSourceReport', params);
expect(coverage['type'], equals('SourceReport'));
- expect(coverage['ranges'].length, 12);
+ expect(coverage['ranges'].length, greaterThanOrEqualTo(10));
expect(allRangesCompiled(coverage), isTrue);
// One function
diff --git a/runtime/observatory/tests/service/get_stack_limit_rpc_test.dart b/runtime/observatory/tests/service/get_stack_limit_rpc_test.dart
index 09186aa..b3e47e2 100644
--- a/runtime/observatory/tests/service/get_stack_limit_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_stack_limit_rpc_test.dart
@@ -58,9 +58,9 @@
expect(awaiterFrames.length, greaterThan(frames.length));
expect(stack['truncated'], false);
verifyStack(frames, [
- 'bar.async_op', 'foo.async_op', 'bar.async_op', 'foo.async_op',
- 'bar.async_op', 'foo.async_op', 'bar.async_op', 'foo.async_op',
- 'bar.async_op', 'foo.async_op', 'bar.async_op', 'foo.async_op',
+ 'bar', 'foo', 'bar', 'foo',
+ 'bar', 'foo', 'bar', 'foo',
+ 'bar', 'foo', 'bar', 'foo',
'_RootZone.runUnary', // Internal async. mech. ..
]);
@@ -78,9 +78,9 @@
expect(awaiterFrames.length, fullStackLength + 1);
expect(stack['truncated'], true);
verifyStack(frames, [
- 'bar.async_op', 'foo.async_op', 'bar.async_op', 'foo.async_op',
- 'bar.async_op', 'foo.async_op', 'bar.async_op', 'foo.async_op',
- 'bar.async_op', 'foo.async_op', 'bar.async_op', 'foo.async_op',
+ 'bar', 'foo', 'bar', 'foo',
+ 'bar', 'foo', 'bar', 'foo',
+ 'bar', 'foo', 'bar', 'foo',
'_RootZone.runUnary', // Internal async. mech. ..
]);
@@ -96,16 +96,16 @@
expect(awaiterFrames.length, 10);
expect(stack['truncated'], true);
verifyStack(frames, [
- 'bar.async_op',
- 'foo.async_op',
- 'bar.async_op',
- 'foo.async_op',
- 'bar.async_op',
- 'foo.async_op',
- 'bar.async_op',
- 'foo.async_op',
- 'bar.async_op',
- 'foo.async_op',
+ 'bar',
+ 'foo',
+ 'bar',
+ 'foo',
+ 'bar',
+ 'foo',
+ 'bar',
+ 'foo',
+ 'bar',
+ 'foo',
]);
},
// Invalid limit
diff --git a/runtime/observatory/tests/service/network_profiling_test.dart b/runtime/observatory/tests/service/network_profiling_test.dart
index 3a318ca..6770c58 100644
--- a/runtime/observatory/tests/service/network_profiling_test.dart
+++ b/runtime/observatory/tests/service/network_profiling_test.dart
@@ -24,6 +24,8 @@
const String kStartSocketProfilingRPC = 'ext.dart.io.startSocketProfiling';
const String localhost = '127.0.0.1';
+List<Object> sockets = [];
+
Future<void> setup() async {}
Future<void> socketTest() async {
@@ -54,6 +56,11 @@
await doneCompleter.future;
// Post finish event
postEvent('socketTest', {'socket': 'test'});
+ // Workaround for dartbug.com/49111: make sure socket IDs are not reused.
+ sockets.add(serverSocket);
+ sockets.add(socket);
+ sockets.add(server);
+ sockets.add(client);
}
bool checkFinishEvent(ServiceEvent event) {
diff --git a/runtime/observatory/tests/service/positive_token_pos_test.dart b/runtime/observatory/tests/service/positive_token_pos_test.dart
index b9c25a8..6ebfbae 100644
--- a/runtime/observatory/tests/service/positive_token_pos_test.dart
+++ b/runtime/observatory/tests/service/positive_token_pos_test.dart
@@ -29,7 +29,7 @@
// We used to return a negative token position for this frame.
// See issue #27128.
var frame = stack['frames'][0];
- expect(frame.function.qualifiedName, equals('helper.async_op'));
+ expect(frame.function.qualifiedName, equals('helper'));
expect(await frame.location.getLine(), equals(14));
expect(await frame.location.getColumn(), equals(1));
diff --git a/runtime/observatory/tests/service/regress_28443_test.dart b/runtime/observatory/tests/service/regress_28443_test.dart
index ccdec12..c986dd5 100644
--- a/runtime/observatory/tests/service/regress_28443_test.dart
+++ b/runtime/observatory/tests/service/regress_28443_test.dart
@@ -8,7 +8,7 @@
import 'package:observatory/service_io.dart';
import 'package:test/test.dart';
-const int LINE_A = 28, LINE_B = 33;
+const int LINE_A = 28, LINE_B = 33, LINE_C = 37;
class VMServiceClient {
VMServiceClient(this.x);
@@ -30,11 +30,11 @@
});
}
-test_code() async {
+test_code() async /* LINE_B */ {
try {
await collect();
} on TimeoutException {
- print("ok");
+ print("ok"); // LINE_C
}
}
@@ -44,12 +44,15 @@
setBreakpointAtLine(LINE_B),
resumeIsolate,
hasStoppedAtBreakpoint,
+ stoppedAtLine(LINE_B),
setBreakpointAtLine(LINE_A),
resumeIsolate,
hasStoppedAtBreakpoint,
+ stoppedAtLine(LINE_A),
+ setBreakpointAtLine(LINE_C),
stepOut,
- stoppedAtLine(LINE_B),
- resumeIsolate
+ resumeIsolate,
+ stoppedAtLine(LINE_C),
];
main(args) => runIsolateTestsSynchronous(args, tests,
diff --git a/runtime/observatory/tests/service/service_test_common.dart b/runtime/observatory/tests/service/service_test_common.dart
index 0189540..50afe39 100644
--- a/runtime/observatory/tests/service/service_test_common.dart
+++ b/runtime/observatory/tests/service/service_test_common.dart
@@ -305,8 +305,7 @@
};
}
-IsolateTest stoppedInFunction(String functionName,
- {bool contains: false, bool includeOwner: false}) {
+IsolateTest stoppedInFunction(String functionName) {
return (Isolate isolate) async {
print("Checking we are in function: $functionName");
@@ -320,13 +319,7 @@
ServiceFunction function =
await topFrame.function!.load() as ServiceFunction;
String name = function.name!;
- if (includeOwner) {
- ServiceFunction owner =
- await (function.dartOwner as ServiceObject).load() as ServiceFunction;
- name = '${owner.name}.$name';
- }
- final bool matches =
- contains ? name.contains(functionName) : name == functionName;
+ final bool matches = name == functionName;
if (!matches) {
StringBuffer sb = new StringBuffer();
sb.write("Expected to be in function $functionName but "
diff --git a/runtime/observatory/tests/service/set_library_debuggable_test.dart b/runtime/observatory/tests/service/set_library_debuggable_test.dart
index 7431778..adac834 100644
--- a/runtime/observatory/tests/service/set_library_debuggable_test.dart
+++ b/runtime/observatory/tests/service/set_library_debuggable_test.dart
@@ -31,12 +31,12 @@
await dartCore.reload();
expect(dartCore.debuggable, equals(true));
},
- stoppedInFunction('testMain', contains: true, includeOwner: true),
+ stoppedInFunction('testMain'),
stoppedAtLine(LINE_A),
stepInto,
stoppedInFunction('print'),
stepOut,
- stoppedInFunction('testMain', contains: true, includeOwner: true),
+ stoppedInFunction('testMain'),
stoppedAtLine(LINE_B),
(Isolate isolate) async {
// Mark 'dart:core' as not debuggable.
@@ -55,10 +55,10 @@
await dartCore.reload();
expect(dartCore.debuggable, equals(false));
},
- stoppedInFunction('testMain', contains: true, includeOwner: true),
+ stoppedInFunction('testMain'),
stoppedAtLine(LINE_B),
stepInto,
- stoppedInFunction('testMain', contains: true, includeOwner: true),
+ stoppedInFunction('testMain'),
stoppedAtLine(LINE_C),
];
diff --git a/runtime/observatory_2/tests/service_2/async_single_step_exception_test.dart b/runtime/observatory_2/tests/service_2/async_single_step_exception_test.dart
index 841afab..9982e0c 100644
--- a/runtime/observatory_2/tests/service_2/async_single_step_exception_test.dart
+++ b/runtime/observatory_2/tests/service_2/async_single_step_exception_test.dart
@@ -55,10 +55,6 @@
smartNext,
hasStoppedAtBreakpoint,
- stoppedAtLine(23), // } (weird dispatching)
- smartNext,
-
- hasStoppedAtBreakpoint,
stoppedAtLine(LINE_D), // await helper (weird dispatching)
smartNext,
diff --git a/runtime/observatory_2/tests/service_2/async_single_step_out_test.dart b/runtime/observatory_2/tests/service_2/async_single_step_out_test.dart
index cfeac6c..e93c274 100644
--- a/runtime/observatory_2/tests/service_2/async_single_step_out_test.dart
+++ b/runtime/observatory_2/tests/service_2/async_single_step_out_test.dart
@@ -44,11 +44,7 @@
stepInto, // exit helper via a single step.
hasStoppedAtBreakpoint,
- stoppedAtLine(20), // return null (weird dispatching)
- stepInto, // exit helper via a single step.
-
- hasStoppedAtBreakpoint,
- stoppedAtLine(25), // await helper (weird dispatching)
+ stoppedAtLine(LINE_D), // await helper
smartNext,
hasStoppedAtBreakpoint,
diff --git a/runtime/observatory_2/tests/service_2/async_star_single_step_into_test.dart b/runtime/observatory_2/tests/service_2/async_star_single_step_into_test.dart
index 0d99fd5..ac8e6ba 100644
--- a/runtime/observatory_2/tests/service_2/async_star_single_step_into_test.dart
+++ b/runtime/observatory_2/tests/service_2/async_star_single_step_into_test.dart
@@ -8,12 +8,13 @@
import 'service_test_common.dart';
import 'test_helper.dart';
-const LINE_A = 19;
-const LINE_B = 20;
-const LINE_C = 24;
-const LINE_D = 27;
-const LINE_E = 33;
-const LINE_F = 34;
+const LINE_A = 20;
+const LINE_B = 21;
+const LINE_C = 25;
+const LINE_D = 28;
+const LINE_E = 34;
+const LINE_F = 35;
+const LINE_G = 26;
foobar() async* {
yield 1; // LINE_A.
@@ -22,7 +23,7 @@
helper() async {
print('helper'); // LINE_C.
- await for (var i in foobar()) {
+ await for (var i in foobar()) /* LINE_G. */ {
debugger();
print('loop'); // LINE_D.
}
@@ -49,6 +50,11 @@
stepOver, // print.
hasStoppedAtBreakpoint,
+ stoppedAtLine(LINE_G), // foobar()
+ stepInto,
+
+ hasStoppedAtBreakpoint,
+ stoppedAtLine(LINE_G), // await for
stepInto,
hasStoppedAtBreakpoint,
@@ -62,6 +68,7 @@
stepOver, // print.
hasStoppedAtBreakpoint,
+ stoppedAtLine(LINE_G),
stepInto,
hasStoppedAtBreakpoint,
diff --git a/runtime/observatory_2/tests/service_2/async_star_step_out_test.dart b/runtime/observatory_2/tests/service_2/async_star_step_out_test.dart
index 95ca280..6e73174 100644
--- a/runtime/observatory_2/tests/service_2/async_star_step_out_test.dart
+++ b/runtime/observatory_2/tests/service_2/async_star_step_out_test.dart
@@ -53,6 +53,11 @@
stepOver, // print.
hasStoppedAtBreakpoint,
+ stoppedAtLine(LINE_H), // foobar().
+ stepInto,
+
+ hasStoppedAtBreakpoint,
+ stoppedAtLine(LINE_H), // await for.
stepInto,
hasStoppedAtBreakpoint,
diff --git a/runtime/observatory_2/tests/service_2/coverage_const_field_async_closure_test.dart b/runtime/observatory_2/tests/service_2/coverage_const_field_async_closure_test.dart
index f2c21ce..ba084ef 100644
--- a/runtime/observatory_2/tests/service_2/coverage_const_field_async_closure_test.dart
+++ b/runtime/observatory_2/tests/service_2/coverage_const_field_async_closure_test.dart
@@ -36,8 +36,7 @@
// Make sure we are in the right place.
expect(stack.type, 'Stack');
expect(stack['frames'].length, greaterThanOrEqualTo(1));
- // Async closure of testFunction
- expect(stack['frames'][0].function.name, 'async_op');
+ expect(stack['frames'][0].function.name, 'testFunction');
var root = isolate.rootLibrary;
await root.load();
diff --git a/runtime/observatory_2/tests/service_2/get_source_report_test.dart b/runtime/observatory_2/tests/service_2/get_source_report_test.dart
index 78ea471..067aeba 100644
--- a/runtime/observatory_2/tests/service_2/get_source_report_test.dart
+++ b/runtime/observatory_2/tests/service_2/get_source_report_test.dart
@@ -91,7 +91,7 @@
final numRanges = coverage['ranges'].length;
expect(coverage['type'], equals('SourceReport'));
- expect(numRanges, equals(11));
+ expect(numRanges, greaterThanOrEqualTo(10));
expect(coverage['ranges'][0], equals(expectedRange));
expect(coverage['scripts'].length, 1);
expect(
@@ -106,7 +106,7 @@
};
coverage = await isolate.invokeRpcNoUpgrade('getSourceReport', params);
expect(coverage['type'], equals('SourceReport'));
- expect(coverage['ranges'].length, 12);
+ expect(coverage['ranges'].length, greaterThanOrEqualTo(10));
expect(allRangesCompiled(coverage), isTrue);
// One function
diff --git a/runtime/observatory_2/tests/service_2/get_stack_limit_rpc_test.dart b/runtime/observatory_2/tests/service_2/get_stack_limit_rpc_test.dart
index fca283d..dc9f253 100644
--- a/runtime/observatory_2/tests/service_2/get_stack_limit_rpc_test.dart
+++ b/runtime/observatory_2/tests/service_2/get_stack_limit_rpc_test.dart
@@ -58,9 +58,9 @@
expect(awaiterFrames.length, greaterThan(frames.length));
expect(stack['truncated'], false);
verifyStack(frames, [
- 'bar.async_op', 'foo.async_op', 'bar.async_op', 'foo.async_op',
- 'bar.async_op', 'foo.async_op', 'bar.async_op', 'foo.async_op',
- 'bar.async_op', 'foo.async_op', 'bar.async_op', 'foo.async_op',
+ 'bar', 'foo', 'bar', 'foo',
+ 'bar', 'foo', 'bar', 'foo',
+ 'bar', 'foo', 'bar', 'foo',
'_RootZone.runUnary', // Internal async. mech. ..
]);
@@ -78,9 +78,9 @@
expect(awaiterFrames.length, fullStackLength + 1);
expect(stack['truncated'], true);
verifyStack(frames, [
- 'bar.async_op', 'foo.async_op', 'bar.async_op', 'foo.async_op',
- 'bar.async_op', 'foo.async_op', 'bar.async_op', 'foo.async_op',
- 'bar.async_op', 'foo.async_op', 'bar.async_op', 'foo.async_op',
+ 'bar', 'foo', 'bar', 'foo',
+ 'bar', 'foo', 'bar', 'foo',
+ 'bar', 'foo', 'bar', 'foo',
'_RootZone.runUnary', // Internal async. mech. ..
]);
@@ -96,16 +96,16 @@
expect(awaiterFrames.length, 10);
expect(stack['truncated'], true);
verifyStack(frames, [
- 'bar.async_op',
- 'foo.async_op',
- 'bar.async_op',
- 'foo.async_op',
- 'bar.async_op',
- 'foo.async_op',
- 'bar.async_op',
- 'foo.async_op',
- 'bar.async_op',
- 'foo.async_op',
+ 'bar',
+ 'foo',
+ 'bar',
+ 'foo',
+ 'bar',
+ 'foo',
+ 'bar',
+ 'foo',
+ 'bar',
+ 'foo',
]);
},
// Invalid limit
diff --git a/runtime/observatory_2/tests/service_2/network_profiling_test.dart b/runtime/observatory_2/tests/service_2/network_profiling_test.dart
index 8ba995f..8a2053b 100644
--- a/runtime/observatory_2/tests/service_2/network_profiling_test.dart
+++ b/runtime/observatory_2/tests/service_2/network_profiling_test.dart
@@ -24,6 +24,8 @@
const String kStartSocketProfilingRPC = 'ext.dart.io.startSocketProfiling';
const String localhost = '127.0.0.1';
+List<Object> sockets = [];
+
Future<void> setup() async {}
Future<void> socketTest() async {
@@ -54,6 +56,11 @@
await doneCompleter.future;
// Post finish event
postEvent('socketTest', {'socket': 'test'});
+ // Workaround for dartbug.com/49111: make sure socket IDs are not reused.
+ sockets.add(serverSocket);
+ sockets.add(socket);
+ sockets.add(server);
+ sockets.add(client);
}
bool checkFinishEvent(ServiceEvent event) {
diff --git a/runtime/observatory_2/tests/service_2/positive_token_pos_test.dart b/runtime/observatory_2/tests/service_2/positive_token_pos_test.dart
index ed4d46e..84dc6e1 100644
--- a/runtime/observatory_2/tests/service_2/positive_token_pos_test.dart
+++ b/runtime/observatory_2/tests/service_2/positive_token_pos_test.dart
@@ -29,7 +29,7 @@
// We used to return a negative token position for this frame.
// See issue #27128.
var frame = stack['frames'][0];
- expect(frame.function.qualifiedName, equals('helper.async_op'));
+ expect(frame.function.qualifiedName, equals('helper'));
expect(await frame.location.getLine(), equals(14));
expect(await frame.location.getColumn(), equals(1));
diff --git a/runtime/observatory_2/tests/service_2/regress_28443_test.dart b/runtime/observatory_2/tests/service_2/regress_28443_test.dart
index ddc48fa..f30535f 100644
--- a/runtime/observatory_2/tests/service_2/regress_28443_test.dart
+++ b/runtime/observatory_2/tests/service_2/regress_28443_test.dart
@@ -8,7 +8,7 @@
import 'package:observatory_2/service_io.dart';
import 'package:test/test.dart';
-const int LINE_A = 28, LINE_B = 33;
+const int LINE_A = 28, LINE_B = 33, LINE_C = 37;
class VMServiceClient {
VMServiceClient(this.x);
@@ -30,11 +30,11 @@
});
}
-test_code() async {
+test_code() async /* LINE_B */ {
try {
await collect();
} on TimeoutException {
- print("ok");
+ print("ok"); // LINE_C
}
}
@@ -44,12 +44,15 @@
setBreakpointAtLine(LINE_B),
resumeIsolate,
hasStoppedAtBreakpoint,
+ stoppedAtLine(LINE_B),
setBreakpointAtLine(LINE_A),
resumeIsolate,
hasStoppedAtBreakpoint,
+ stoppedAtLine(LINE_A),
+ setBreakpointAtLine(LINE_C),
stepOut,
- stoppedAtLine(LINE_B),
- resumeIsolate
+ resumeIsolate,
+ stoppedAtLine(LINE_C),
];
main(args) => runIsolateTestsSynchronous(args, tests,
diff --git a/runtime/observatory_2/tests/service_2/service_test_common.dart b/runtime/observatory_2/tests/service_2/service_test_common.dart
index e1dc008..a8530b0 100644
--- a/runtime/observatory_2/tests/service_2/service_test_common.dart
+++ b/runtime/observatory_2/tests/service_2/service_test_common.dart
@@ -308,8 +308,7 @@
};
}
-IsolateTest stoppedInFunction(String functionName,
- {bool contains: false, bool includeOwner: false}) {
+IsolateTest stoppedInFunction(String functionName) {
return (Isolate isolate) async {
print("Checking we are in function: $functionName");
@@ -322,13 +321,7 @@
Frame topFrame = frames[0];
ServiceFunction function = await topFrame.function.load();
String name = function.name;
- if (includeOwner) {
- ServiceFunction owner =
- await (function.dartOwner as ServiceObject).load();
- name = '${owner.name}.$name';
- }
- final bool matches =
- contains ? name.contains(functionName) : name == functionName;
+ final bool matches = name == functionName;
if (!matches) {
StringBuffer sb = new StringBuffer();
sb.write("Expected to be in function $functionName but "
diff --git a/runtime/observatory_2/tests/service_2/set_library_debuggable_test.dart b/runtime/observatory_2/tests/service_2/set_library_debuggable_test.dart
index 89a8b52..e2bcc9c 100644
--- a/runtime/observatory_2/tests/service_2/set_library_debuggable_test.dart
+++ b/runtime/observatory_2/tests/service_2/set_library_debuggable_test.dart
@@ -31,12 +31,12 @@
await dartCore.reload();
expect(dartCore.debuggable, equals(true));
},
- stoppedInFunction('testMain', contains: true, includeOwner: true),
+ stoppedInFunction('testMain'),
stoppedAtLine(LINE_A),
stepInto,
stoppedInFunction('print'),
stepOut,
- stoppedInFunction('testMain', contains: true, includeOwner: true),
+ stoppedInFunction('testMain'),
stoppedAtLine(LINE_B),
(Isolate isolate) async {
// Mark 'dart:core' as not debuggable.
@@ -55,10 +55,10 @@
await dartCore.reload();
expect(dartCore.debuggable, equals(false));
},
- stoppedInFunction('testMain', contains: true, includeOwner: true),
+ stoppedInFunction('testMain'),
stoppedAtLine(LINE_B),
stepInto,
- stoppedInFunction('testMain', contains: true, includeOwner: true),
+ stoppedInFunction('testMain'),
stoppedAtLine(LINE_C),
];
diff --git a/runtime/tests/vm/dart/causal_stacks/utils.dart b/runtime/tests/vm/dart/causal_stacks/utils.dart
index 077e9bd..584fd6d 100644
--- a/runtime/tests/vm/dart/causal_stacks/utils.dart
+++ b/runtime/tests/vm/dart/causal_stacks/utils.dart
@@ -321,15 +321,12 @@
final expected = const <String>[
r'^#0 throwSync \(.*/utils.dart:16(:3)?\)$',
r'^#1 noYields3 \(.*/utils.dart:54(:3)?\)$',
- r'^#2 noYields3 \(.*/utils.dart:53(:23)?\)$',
- r'^#3 noYields2 \(.*/utils.dart:50(:9)?\)$',
- r'^#4 noYields2 \(.*/utils.dart:49(:23)?\)$',
- r'^#5 noYields \(.*/utils.dart:46(:9)?\)$',
- r'^#6 noYields \(.*/utils.dart:45(:22)?\)$',
+ r'^#2 noYields2 \(.*/utils.dart:50(:9)?\)$',
+ r'^#3 noYields \(.*/utils.dart:46(:9)?\)$',
];
final postfix = const <String>[
- r'^#9 doTestsNoCausalNoLazy ',
- r'^#10 _RootZone.runUnary \(.+\)$',
+ r'^#5 doTestsNoCausalNoLazy ',
+ r'^#6 _RootZone.runUnary \(.+\)$',
// The rest are internal frames which we don't really care about.
IGNORE_REMAINING_STACK,
];
@@ -338,8 +335,7 @@
noYields,
expected +
const <String>[
- r'^#7 doTestAwait ',
- r'^#8 doTestAwait ',
+ r'^#4 doTestAwait ',
] +
postfix,
debugInfoFilename);
@@ -348,8 +344,7 @@
noYields,
expected +
const <String>[
- r'^#7 doTestAwaitThen ',
- r'^#8 doTestAwaitThen ',
+ r'^#4 doTestAwaitThen ',
] +
postfix,
debugInfoFilename);
@@ -358,8 +353,7 @@
noYields,
expected +
const <String>[
- r'^#7 doTestAwaitCatchError ',
- r'^#8 doTestAwaitCatchError ',
+ r'^#4 doTestAwaitCatchError ',
] +
postfix,
debugInfoFilename);
diff --git a/runtime/tests/vm/dart_2/causal_stacks/utils.dart b/runtime/tests/vm/dart_2/causal_stacks/utils.dart
index 0d1489c..5ae06ed 100644
--- a/runtime/tests/vm/dart_2/causal_stacks/utils.dart
+++ b/runtime/tests/vm/dart_2/causal_stacks/utils.dart
@@ -323,15 +323,12 @@
final expected = const <String>[
r'^#0 throwSync \(.*/utils.dart:18(:3)?\)$',
r'^#1 noYields3 \(.*/utils.dart:56(:3)?\)$',
- r'^#2 noYields3 \(.*/utils.dart:55(:23)?\)$',
- r'^#3 noYields2 \(.*/utils.dart:52(:9)?\)$',
- r'^#4 noYields2 \(.*/utils.dart:51(:23)?\)$',
- r'^#5 noYields \(.*/utils.dart:48(:9)?\)$',
- r'^#6 noYields \(.*/utils.dart:47(:22)?\)$',
+ r'^#2 noYields2 \(.*/utils.dart:52(:9)?\)$',
+ r'^#3 noYields \(.*/utils.dart:48(:9)?\)$',
];
final postfix = const <String>[
- r'^#9 doTestsNoCausalNoLazy ',
- r'^#10 _RootZone.runUnary ',
+ r'^#5 doTestsNoCausalNoLazy ',
+ r'^#6 _RootZone.runUnary ',
// The rest are internal frames which we don't really care about.
IGNORE_REMAINING_STACK,
];
@@ -340,8 +337,7 @@
noYields,
expected +
const <String>[
- r'^#7 doTestAwait ',
- r'^#8 doTestAwait ',
+ r'^#4 doTestAwait ',
] +
postfix,
debugInfoFilename);
@@ -350,8 +346,7 @@
noYields,
expected +
const <String>[
- r'^#7 doTestAwaitThen ',
- r'^#8 doTestAwaitThen ',
+ r'^#4 doTestAwaitThen ',
] +
postfix,
debugInfoFilename);
@@ -360,8 +355,7 @@
noYields,
expected +
const <String>[
- r'^#7 doTestAwaitCatchError ',
- r'^#8 doTestAwaitCatchError ',
+ r'^#4 doTestAwaitCatchError ',
] +
postfix,
debugInfoFilename);
diff --git a/runtime/vm/app_snapshot.cc b/runtime/vm/app_snapshot.cc
index c88a31f..c5523fb 100644
--- a/runtime/vm/app_snapshot.cc
+++ b/runtime/vm/app_snapshot.cc
@@ -1900,12 +1900,12 @@
// in the current loading unit).
ObjectPoolPtr pool = code->untag()->object_pool_;
if (s->kind() == Snapshot::kFullAOT) {
- TracePool(s, pool, /*only_code=*/is_deferred);
+ TracePool(s, pool, /*only_call_targets=*/is_deferred);
} else {
if (s->InCurrentLoadingUnitOrRoot(pool)) {
s->Push(pool);
} else {
- TracePool(s, pool, /*only_code=*/true);
+ TracePool(s, pool, /*only_call_targets=*/true);
}
}
@@ -1973,7 +1973,7 @@
#endif
}
- void TracePool(Serializer* s, ObjectPoolPtr pool, bool only_code) {
+ void TracePool(Serializer* s, ObjectPoolPtr pool, bool only_call_targets) {
if (pool == ObjectPool::null()) {
return;
}
@@ -1984,8 +1984,18 @@
auto entry_type = ObjectPool::TypeBits::decode(entry_bits[i]);
if (entry_type == ObjectPool::EntryType::kTaggedObject) {
const ObjectPtr target = pool->untag()->data()[i].raw_obj_;
- if (!only_code || target->IsCode()) {
+ // A field is a call target because its initializer may be called
+ // indirectly by passing the field to the runtime. A const closure
+ // is a call target because its function may be called indirectly
+ // via a closure call.
+ if (!only_call_targets || target->IsCode() || target->IsFunction() ||
+ target->IsField() || target->IsClosure()) {
s->Push(target);
+ } else {
+ intptr_t cid = target->GetClassIdMayBeSmi();
+ if (cid >= kNumPredefinedCids) {
+ s->Push(s->isolate_group()->class_table()->At(cid));
+ }
}
}
}
diff --git a/runtime/vm/compiler/aot/precompiler.cc b/runtime/vm/compiler/aot/precompiler.cc
index ee450a6..6c6a023 100644
--- a/runtime/vm/compiler/aot/precompiler.cc
+++ b/runtime/vm/compiler/aot/precompiler.cc
@@ -424,6 +424,7 @@
typeparams_to_retain_(),
consts_to_retain_(),
seen_table_selectors_(),
+ api_uses_(),
error_(Error::Handle()),
get_runtime_type_is_unique_(false) {
ASSERT(Precompiler::singleton_ == NULL);
@@ -662,6 +663,8 @@
ProgramVisitor::Dedup(T);
}
+ PruneDictionaries();
+
if (retained_reasons_writer_ != nullptr) {
reasons_writer.Write();
retained_reasons_writer_ = nullptr;
@@ -752,6 +755,7 @@
}
}
if (!main.IsNull()) {
+ AddApiUse(main);
if (lib.LookupLocalFunction(name) == Function::null()) {
retain_root_library_caches_ = true;
}
@@ -1464,6 +1468,14 @@
return seen_table_selectors_.HasKey(selector_id);
}
+void Precompiler::AddApiUse(const Object& obj) {
+ api_uses_.Insert(&Object::ZoneHandle(Z, obj.ptr()));
+}
+
+bool Precompiler::HasApiUse(const Object& obj) {
+ return api_uses_.HasKey(&obj);
+}
+
void Precompiler::AddInstantiatedClass(const Class& cls) {
if (is_tracing()) {
tracer_->WriteClassInstantiationRef(cls);
@@ -1523,6 +1535,7 @@
&reusable_object_handle) ==
EntryPointPragma::kAlways) {
AddInstantiatedClass(cls);
+ AddApiUse(cls);
}
}
@@ -1541,6 +1554,7 @@
if (pragma == EntryPointPragma::kNever) continue;
AddField(field);
+ AddApiUse(field);
if (!field.is_static()) {
if (pragma != EntryPointPragma::kSetterOnly) {
@@ -1569,6 +1583,7 @@
type == EntryPointPragma::kCallOnly) {
functions_with_entry_point_pragmas_.Insert(function);
AddFunction(function, RetainReasons::kEntryPointPragma);
+ AddApiUse(function);
}
if ((type == EntryPointPragma::kAlways ||
@@ -1578,10 +1593,16 @@
function2 = function.ImplicitClosureFunction();
functions_with_entry_point_pragmas_.Insert(function2);
AddFunction(function2, RetainReasons::kEntryPointPragma);
+
+ // Not `function2`: Dart_GetField will lookup the regular function
+ // and get the implicit closure function from that.
+ AddApiUse(function);
}
if (function.IsGenerativeConstructor()) {
AddInstantiatedClass(cls);
+ AddApiUse(function);
+ AddApiUse(cls);
}
}
if (function.kind() == UntaggedFunction::kImplicitGetter &&
@@ -1591,6 +1612,7 @@
if (function.accessor_field() == field.ptr()) {
functions_with_entry_point_pragmas_.Insert(function);
AddFunction(function, RetainReasons::kImplicitGetter);
+ AddApiUse(function);
}
}
}
@@ -1601,6 +1623,7 @@
if (function.accessor_field() == field.ptr()) {
functions_with_entry_point_pragmas_.Insert(function);
AddFunction(function, RetainReasons::kImplicitSetter);
+ AddApiUse(function);
}
}
}
@@ -1611,9 +1634,15 @@
if (function.accessor_field() == field.ptr()) {
functions_with_entry_point_pragmas_.Insert(function);
AddFunction(function, RetainReasons::kImplicitStaticGetter);
+ AddApiUse(function);
}
}
}
+ if (function.is_native()) {
+ // The embedder will need to lookup this library to provide the native
+ // resolver, even if there are no embedder calls into the library.
+ AddApiUse(lib);
+ }
}
implicit_getters = GrowableObjectArray::null();
@@ -3069,6 +3098,166 @@
}
}
+void Precompiler::PruneDictionaries() {
+ // PRODUCT-only: pruning interferes with various uses of the service protocol,
+ // including heap analysis tools.
+#if defined(PRODUCT)
+ class PruneDictionariesVisitor {
+ public:
+ GrowableObjectArrayPtr PruneLibraries(
+ const GrowableObjectArray& libraries) {
+ for (intptr_t i = 0; i < libraries.Length(); i++) {
+ lib_ ^= libraries.At(i);
+ bool retain = PruneLibrary(lib_);
+ if (retain) {
+ lib_.set_index(retained_libraries_.Length());
+ retained_libraries_.Add(lib_);
+ } else {
+ lib_.set_index(-1);
+ lib_.set_private_key(null_string_);
+ }
+ }
+
+ Library::RegisterLibraries(Thread::Current(), retained_libraries_);
+ return retained_libraries_.ptr();
+ }
+
+ bool PruneLibrary(const Library& lib) {
+ dict_ = lib.dictionary();
+ intptr_t dict_size = dict_.Length() - 1;
+ intptr_t used = 0;
+ for (intptr_t i = 0; i < dict_size; i++) {
+ entry_ = dict_.At(i);
+ if (entry_.IsNull()) continue;
+
+ bool retain = false;
+ if (entry_.IsClass()) {
+ // dart:async: Fix async stack trace lookups in dart:async to annotate
+ // entry points or fail gracefully.
+ // dart:core, dart:collection, dart:typed_data: Isolate messaging
+ // between groups allows any class in these libraries.
+ retain = PruneClass(Class::Cast(entry_)) ||
+ (lib.url() == Symbols::DartAsync().ptr()) ||
+ (lib.url() == Symbols::DartCore().ptr()) ||
+ (lib.url() == Symbols::DartCollection().ptr()) ||
+ (lib.url() == Symbols::DartTypedData().ptr());
+ } else if (entry_.IsFunction() || entry_.IsField()) {
+ retain = precompiler_->HasApiUse(entry_);
+ } else {
+ FATAL("Unexpected library entry: %s", entry_.ToCString());
+ }
+ if (retain) {
+ used++;
+ } else {
+ dict_.SetAt(i, Object::null_object());
+ }
+ }
+ lib.RehashDictionary(dict_, used * 4 / 3 + 1);
+
+ bool retain = used > 0;
+ cls_ = lib.toplevel_class();
+ if (PruneClass(cls_)) {
+ retain = true;
+ }
+ if (lib.is_dart_scheme()) {
+ retain = true;
+ }
+ if (lib.ptr() == root_lib_.ptr()) {
+ retain = true;
+ }
+ if (precompiler_->HasApiUse(lib)) {
+ retain = true;
+ }
+ return retain;
+ }
+
+ bool PruneClass(const Class& cls) {
+ bool retain = precompiler_->HasApiUse(cls);
+
+ functions_ = cls.functions();
+ retained_functions_ = GrowableObjectArray::New();
+ for (intptr_t i = 0; i < functions_.Length(); i++) {
+ function_ ^= functions_.At(i);
+ if (precompiler_->HasApiUse(function_)) {
+ retained_functions_.Add(function_);
+ retain = true;
+ } else if (precompiler_->functions_called_dynamically_.ContainsKey(
+ function_)) {
+ retained_functions_.Add(function_);
+ // No `retain = true`: the function must appear in the method
+ // dictionary for lookup, but the class may still be removed from the
+ // library.
+ }
+ }
+ if (retained_functions_.Length() > 0) {
+ functions_ = Array::MakeFixedLength(retained_functions_);
+ cls.SetFunctions(functions_);
+ } else {
+ cls.SetFunctions(Object::empty_array());
+ }
+
+ fields_ = cls.fields();
+ retained_fields_ = GrowableObjectArray::New();
+ for (intptr_t i = 0; i < fields_.Length(); i++) {
+ field_ ^= fields_.At(i);
+ if (precompiler_->HasApiUse(field_)) {
+ retained_fields_.Add(field_);
+ retain = true;
+ }
+ }
+ if (retained_fields_.Length() > 0) {
+ fields_ = Array::MakeFixedLength(retained_fields_);
+ cls.SetFields(fields_);
+ } else {
+ cls.SetFields(Object::empty_array());
+ }
+
+ return retain;
+ }
+
+ explicit PruneDictionariesVisitor(Precompiler* precompiler, Zone* zone)
+ : precompiler_(precompiler),
+ lib_(Library::Handle(zone)),
+ dict_(Array::Handle(zone)),
+ entry_(Object::Handle(zone)),
+ cls_(Class::Handle(zone)),
+ functions_(Array::Handle(zone)),
+ fields_(Array::Handle(zone)),
+ function_(Function::Handle(zone)),
+ field_(Field::Handle(zone)),
+ retained_functions_(GrowableObjectArray::Handle(zone)),
+ retained_fields_(GrowableObjectArray::Handle(zone)),
+ retained_libraries_(
+ GrowableObjectArray::Handle(zone, GrowableObjectArray::New())),
+ root_lib_(Library::Handle(
+ zone,
+ precompiler->isolate_group()->object_store()->root_library())),
+ null_string_(String::Handle(zone)) {}
+
+ private:
+ Precompiler* const precompiler_;
+ Library& lib_;
+ Array& dict_;
+ Object& entry_;
+ Class& cls_;
+ Array& functions_;
+ Array& fields_;
+ Function& function_;
+ Field& field_;
+ GrowableObjectArray& retained_functions_;
+ GrowableObjectArray& retained_fields_;
+ const GrowableObjectArray& retained_libraries_;
+ const Library& root_lib_;
+ const String& null_string_;
+ };
+
+ HANDLESCOPE(T);
+ SafepointWriteRwLocker ml(T, T->isolate_group()->program_lock());
+ PruneDictionariesVisitor visitor(this, Z);
+ libraries_ = visitor.PruneLibraries(libraries_);
+#endif // defined(PRODUCT)
+}
+
// Traits for the HashTable template.
struct CodeKeyTraits {
static uint32_t Hash(const Object& key) { return Code::Cast(key).Size(); }
diff --git a/runtime/vm/compiler/aot/precompiler.h b/runtime/vm/compiler/aot/precompiler.h
index 4e0d211..50df9e7 100644
--- a/runtime/vm/compiler/aot/precompiler.h
+++ b/runtime/vm/compiler/aot/precompiler.h
@@ -210,6 +210,37 @@
typedef DirectChainedHashMap<TypeArgumentsKeyValueTrait> TypeArgumentsSet;
+class ProgramElementKeyValueTrait {
+ public:
+ // Typedefs needed for the DirectChainedHashMap template.
+ typedef const Object* Key;
+ typedef const Object* Value;
+ typedef const Object* Pair;
+
+ static Key KeyOf(Pair kv) { return kv; }
+
+ static Value ValueOf(Pair kv) { return kv; }
+
+ static inline uword Hash(Key key) {
+ if (key->IsFunction()) {
+ return Function::Cast(*key).Hash();
+ } else if (key->IsField()) {
+ return Field::Cast(*key).kernel_offset();
+ } else if (key->IsClass()) {
+ return Class::Cast(*key).kernel_offset();
+ } else if (key->IsLibrary()) {
+ return Library::Cast(*key).index();
+ }
+ FATAL("Unexpected type: %s\n", key->ToCString());
+ }
+
+ static inline bool IsKeyEqual(Pair pair, Key key) {
+ return pair->ptr() == key->ptr();
+ }
+};
+
+typedef DirectChainedHashMap<ProgramElementKeyValueTrait> ProgramElementSet;
+
class InstanceKeyValueTrait {
public:
// Typedefs needed for the DirectChainedHashMap template.
@@ -321,6 +352,8 @@
bool IsHitByTableSelector(const Function& function);
// Returns the reason if the function must be retained, otherwise nullptr.
const char* MustRetainFunction(const Function& function);
+ void AddApiUse(const Object& obj);
+ bool HasApiUse(const Object& obj);
void ProcessFunction(const Function& function);
void CheckForNewDynamicFunctions();
@@ -343,6 +376,7 @@
void DropClasses();
void DropLibraries();
void DiscardCodeObjects();
+ void PruneDictionaries();
DEBUG_ONLY(FunctionPtr FindUnvisitedRetainedFunction());
@@ -393,6 +427,7 @@
TypeParameterSet typeparams_to_retain_;
InstanceSet consts_to_retain_;
TableSelectorSet seen_table_selectors_;
+ ProgramElementSet api_uses_;
Error& error_;
compiler::DispatchTableGenerator* dispatch_table_generator_;
diff --git a/runtime/vm/compiler/assembler/assembler_arm.cc b/runtime/vm/compiler/assembler/assembler_arm.cc
index 67f8fb8..2839cd8 100644
--- a/runtime/vm/compiler/assembler/assembler_arm.cc
+++ b/runtime/vm/compiler/assembler/assembler_arm.cc
@@ -1587,7 +1587,7 @@
target::Instructions::HeaderSize() - kHeapObjectTag;
mov(R0, Operand(PC));
AddImmediate(R0, -offset);
- ldr(IP, FieldAddress(CODE_REG, target::Code::saved_instructions_offset()));
+ ldr(IP, FieldAddress(CODE_REG, target::Code::instructions_offset()));
cmp(R0, Operand(IP));
b(&instructions_ok, EQ);
bkpt(1);
@@ -3308,6 +3308,10 @@
READS_RETURN_ADDRESS_FROM_LR(bx(LR, cond));
}
+void Assembler::SetReturnAddress(Register value) {
+ RESTORES_RETURN_ADDRESS_FROM_REGISTER_TO_LR(MoveRegister(LR, value));
+}
+
void Assembler::ReserveAlignedFrameSpace(intptr_t frame_space) {
// Reserve space for arguments and align frame before entering
// the C++ world.
diff --git a/runtime/vm/compiler/assembler/assembler_arm.h b/runtime/vm/compiler/assembler/assembler_arm.h
index 00dc85b..8a714cf 100644
--- a/runtime/vm/compiler/assembler/assembler_arm.h
+++ b/runtime/vm/compiler/assembler/assembler_arm.h
@@ -1300,6 +1300,11 @@
void EnterFrame(RegList regs, intptr_t frame_space);
void LeaveFrame(RegList regs, bool allow_pop_pc = false);
void Ret(Condition cond = AL);
+
+ // Sets the return address to [value] as if there was a call.
+ // On ARM sets LR.
+ void SetReturnAddress(Register value);
+
void ReserveAlignedFrameSpace(intptr_t frame_space);
// In debug mode, this generates code to check that:
diff --git a/runtime/vm/compiler/assembler/assembler_arm64.cc b/runtime/vm/compiler/assembler/assembler_arm64.cc
index e282fcb..f904733 100644
--- a/runtime/vm/compiler/assembler/assembler_arm64.cc
+++ b/runtime/vm/compiler/assembler/assembler_arm64.cc
@@ -1540,7 +1540,7 @@
const intptr_t entry_offset =
CodeSize() + target::Instructions::HeaderSize() - kHeapObjectTag;
adr(R0, Immediate(-entry_offset));
- ldr(TMP, FieldAddress(CODE_REG, target::Code::saved_instructions_offset()));
+ ldr(TMP, FieldAddress(CODE_REG, target::Code::instructions_offset()));
cmp(R0, Operand(TMP));
b(&instructions_ok, EQ);
brk(1);
@@ -1583,6 +1583,10 @@
mov(CSP, SP);
}
+void Assembler::SetReturnAddress(Register value) {
+ RESTORES_RETURN_ADDRESS_FROM_REGISTER_TO_LR(MoveRegister(LR, value));
+}
+
void Assembler::EnterFrame(intptr_t frame_size) {
SPILLS_LR_TO_FRAME(PushPair(FP, LR)); // low: FP, high: LR.
mov(FP, SP);
diff --git a/runtime/vm/compiler/assembler/assembler_arm64.h b/runtime/vm/compiler/assembler/assembler_arm64.h
index 3e79152..fa1d808 100644
--- a/runtime/vm/compiler/assembler/assembler_arm64.h
+++ b/runtime/vm/compiler/assembler/assembler_arm64.h
@@ -2121,6 +2121,10 @@
void LeaveFrame();
void Ret() { ret(); }
+ // Sets the return address to [value] as if there was a call.
+ // On ARM64 sets LR.
+ void SetReturnAddress(Register value);
+
// Emit code to transition between generated mode and native mode.
//
// These require and ensure that CSP and SP are equal and aligned and require
diff --git a/runtime/vm/compiler/assembler/assembler_ia32.h b/runtime/vm/compiler/assembler/assembler_ia32.h
index b97296c..7ef5339 100644
--- a/runtime/vm/compiler/assembler/assembler_ia32.h
+++ b/runtime/vm/compiler/assembler/assembler_ia32.h
@@ -573,6 +573,13 @@
*/
void Ret() { ret(); }
+
+ // Sets the return address to [value] as if there was a call.
+ // On IA32 pushes [value].
+ void SetReturnAddress(Register value) {
+ PushRegister(value);
+ }
+
void CompareRegisters(Register a, Register b);
void CompareObjectRegisters(Register a, Register b) {
CompareRegisters(a, b);
diff --git a/runtime/vm/compiler/assembler/assembler_riscv.cc b/runtime/vm/compiler/assembler/assembler_riscv.cc
index 0c1caab..cdfa87a 100644
--- a/runtime/vm/compiler/assembler/assembler_riscv.cc
+++ b/runtime/vm/compiler/assembler/assembler_riscv.cc
@@ -2727,6 +2727,9 @@
Register rs1,
intx_t imm,
OperandSize sz) {
+ if ((imm == 0) && (rd == rs1)) {
+ return;
+ }
if (IsITypeImm(imm)) {
addi(rd, rs1, imm);
} else {
@@ -3646,7 +3649,7 @@
intx_t hi = (imm - lo) << (XLEN - 32) >> (XLEN - 32);
auipc(TMP, hi);
addi(TMP, TMP, lo);
- lx(TMP2, FieldAddress(CODE_REG, target::Code::saved_instructions_offset()));
+ lx(TMP2, FieldAddress(CODE_REG, target::Code::instructions_offset()));
beq(TMP, TMP2, &instructions_ok, kNearJump);
ebreak();
Bind(&instructions_ok);
diff --git a/runtime/vm/compiler/assembler/assembler_riscv.h b/runtime/vm/compiler/assembler/assembler_riscv.h
index 914301b..eb2708e 100644
--- a/runtime/vm/compiler/assembler/assembler_riscv.h
+++ b/runtime/vm/compiler/assembler/assembler_riscv.h
@@ -1231,6 +1231,12 @@
void LeaveFrame();
void Ret() { ret(); }
+ // Sets the return address to [value] as if there was a call.
+ // On RISC-V sets RA.
+ void SetReturnAddress(Register value) {
+ mv(RA, value);
+ }
+
// Emit code to transition between generated mode and native mode.
//
// These require and ensure that CSP and SP are equal and aligned and require
diff --git a/runtime/vm/compiler/assembler/assembler_x64.cc b/runtime/vm/compiler/assembler/assembler_x64.cc
index f4f0dd4..2d3ebb0 100644
--- a/runtime/vm/compiler/assembler/assembler_x64.cc
+++ b/runtime/vm/compiler/assembler/assembler_x64.cc
@@ -2069,7 +2069,7 @@
leaq(RAX, Address::AddressRIPRelative(-header_to_rip_offset));
ASSERT(CodeSize() == (header_to_rip_offset - header_to_entry_offset));
}
- cmpq(RAX, FieldAddress(CODE_REG, target::Code::saved_instructions_offset()));
+ cmpq(RAX, FieldAddress(CODE_REG, target::Code::instructions_offset()));
j(EQUAL, &instructions_ok);
int3();
Bind(&instructions_ok);
diff --git a/runtime/vm/compiler/assembler/assembler_x64.h b/runtime/vm/compiler/assembler/assembler_x64.h
index 9f3fb6e..eafff9b 100644
--- a/runtime/vm/compiler/assembler/assembler_x64.h
+++ b/runtime/vm/compiler/assembler/assembler_x64.h
@@ -711,6 +711,13 @@
// Methods for High-level operations and implemented on all architectures.
void Ret() { ret(); }
+
+ // Sets the return address to [value] as if there was a call.
+ // On X64 pushes [value].
+ void SetReturnAddress(Register value) {
+ PushRegister(value);
+ }
+
void CompareRegisters(Register a, Register b);
void CompareObjectRegisters(Register a, Register b) { OBJ(cmp)(a, b); }
void BranchIf(Condition condition,
diff --git a/runtime/vm/compiler/backend/constant_propagator.cc b/runtime/vm/compiler/backend/constant_propagator.cc
index 51af8e2..85595e1 100644
--- a/runtime/vm/compiler/backend/constant_propagator.cc
+++ b/runtime/vm/compiler/backend/constant_propagator.cc
@@ -1456,6 +1456,10 @@
SetValue(instr, non_constant_);
}
+void ConstantPropagator::VisitSuspend(SuspendInstr* instr) {
+ SetValue(instr, non_constant_);
+}
+
void ConstantPropagator::VisitLoadThread(LoadThreadInstr* instr) {
SetValue(instr, non_constant_);
}
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
index bce15d9..5a9918a 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
@@ -373,7 +373,8 @@
Register value_reg = slot_index == args_desc_slot ? ARGS_DESC_REG : R0;
__ StoreToOffset(value_reg, FP, slot_index * compiler::target::kWordSize);
}
- } else if (parsed_function().suspend_state_var() != nullptr) {
+ } else if (parsed_function().suspend_state_var() != nullptr &&
+ !flow_graph().IsCompiledForOsr()) {
// Initialize synthetic :suspend_state variable early
// as it may be accessed by GC and exception handling before
// InitSuspendableFunction stub is called.
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
index 7f86e88..fd697f2 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
@@ -363,7 +363,8 @@
slot_index == args_desc_slot ? ARGS_DESC_REG : NULL_REG;
__ StoreToOffset(value_reg, FP, slot_index * kWordSize);
}
- } else if (parsed_function().suspend_state_var() != nullptr) {
+ } else if (parsed_function().suspend_state_var() != nullptr &&
+ !flow_graph().IsCompiledForOsr()) {
// Initialize synthetic :suspend_state variable early
// as it may be accessed by GC and exception handling before
// InitSuspendableFunction stub is called.
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc b/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
index e4b5071..db8d71e 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
@@ -450,7 +450,8 @@
Register value_reg = slot_index == args_desc_slot ? ARGS_DESC_REG : EAX;
__ movl(compiler::Address(EBP, slot_index * kWordSize), value_reg);
}
- } else if (parsed_function().suspend_state_var() != nullptr) {
+ } else if (parsed_function().suspend_state_var() != nullptr &&
+ !flow_graph().IsCompiledForOsr()) {
// Initialize synthetic :suspend_state variable early
// as it may be accessed by GC and exception handling before
// InitSuspendableFunction stub is called.
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc b/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc
index 7a3215d..58f2236 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_riscv.cc
@@ -357,7 +357,8 @@
__ StoreToOffset(value_reg, SP,
(slot_index + fp_to_sp_delta) * kWordSize);
}
- } else if (parsed_function().suspend_state_var() != nullptr) {
+ } else if (parsed_function().suspend_state_var() != nullptr &&
+ !flow_graph().IsCompiledForOsr()) {
// Initialize synthetic :suspend_state variable early
// as it may be accessed by GC and exception handling before
// InitSuspendableFunction stub is called.
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc b/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
index 1c87031..ba0add49 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
@@ -369,7 +369,8 @@
Register value_reg = slot_index == args_desc_slot ? ARGS_DESC_REG : RAX;
__ movq(compiler::Address(RBP, slot_index * kWordSize), value_reg);
}
- } else if (parsed_function().suspend_state_var() != nullptr) {
+ } else if (parsed_function().suspend_state_var() != nullptr &&
+ !flow_graph().IsCompiledForOsr()) {
// Initialize synthetic :suspend_state variable early
// as it may be accessed by GC and exception handling before
// InitSuspendableFunction stub is called.
diff --git a/runtime/vm/compiler/backend/il.cc b/runtime/vm/compiler/backend/il.cc
index e4ba8ff..95d5237 100644
--- a/runtime/vm/compiler/backend/il.cc
+++ b/runtime/vm/compiler/backend/il.cc
@@ -7298,10 +7298,6 @@
locs->set_in(0, Location::RegisterLocation(
InitSuspendableFunctionStubABI::kTypeArgsReg));
break;
- case StubId::kAwait:
- case StubId::kYieldAsyncStar:
- locs->set_in(0, Location::RegisterLocation(SuspendStubABI::kArgumentReg));
- break;
}
locs->set_out(0, Location::RegisterLocation(CallingConventions::kReturnReg));
return locs;
@@ -7314,12 +7310,34 @@
case StubId::kInitAsync:
stub = object_store->init_async_stub();
break;
- case StubId::kAwait:
- stub = object_store->await_stub();
- break;
case StubId::kInitAsyncStar:
stub = object_store->init_async_star_stub();
break;
+ }
+ compiler->GenerateStubCall(source(), stub, UntaggedPcDescriptors::kOther,
+ locs(), deopt_id(), env());
+}
+
+LocationSummary* SuspendInstr::MakeLocationSummary(Zone* zone, bool opt) const {
+ const intptr_t kNumInputs = 1;
+ const intptr_t kNumTemps = 0;
+ LocationSummary* locs = new (zone)
+ LocationSummary(zone, kNumInputs, kNumTemps, LocationSummary::kCall);
+ locs->set_in(0, Location::RegisterLocation(SuspendStubABI::kArgumentReg));
+ locs->set_out(0, Location::RegisterLocation(CallingConventions::kReturnReg));
+ return locs;
+}
+
+void SuspendInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
+ // Use deopt_id as a yield index.
+ compiler->EmitYieldPositionMetadata(source(), deopt_id());
+
+ ObjectStore* object_store = compiler->isolate_group()->object_store();
+ Code& stub = Code::ZoneHandle(compiler->zone());
+ switch (stub_id_) {
+ case StubId::kAwait:
+ stub = object_store->await_stub();
+ break;
case StubId::kYieldAsyncStar:
stub = object_store->yield_async_star_stub();
break;
@@ -7328,18 +7346,18 @@
locs(), deopt_id(), env());
#if defined(TARGET_ARCH_X64) || defined(TARGET_ARCH_IA32)
- if ((stub_id_ == StubId::kAwait) || (stub_id_ == StubId::kYieldAsyncStar)) {
- // On x86 (X64 and IA32) mismatch between calls and returns
- // significantly regresses performance. So suspend stub
- // does not return directly to the caller. Instead, a small
- // epilogue is generated right after the call to suspend stub,
- // and resume stub adjusts resume PC to skip this epilogue.
- const intptr_t start = compiler->assembler()->CodeSize();
- __ LeaveFrame();
- __ ret();
- RELEASE_ASSERT(compiler->assembler()->CodeSize() - start ==
- SuspendStubABI::kResumePcDistance);
- }
+ // On x86 (X64 and IA32) mismatch between calls and returns
+ // significantly regresses performance. So suspend stub
+ // does not return directly to the caller. Instead, a small
+ // epilogue is generated right after the call to suspend stub,
+ // and resume stub adjusts resume PC to skip this epilogue.
+ const intptr_t start = compiler->assembler()->CodeSize();
+ __ LeaveFrame();
+ __ ret();
+ RELEASE_ASSERT(compiler->assembler()->CodeSize() - start ==
+ SuspendStubABI::kResumePcDistance);
+ compiler->EmitCallsiteMetadata(source(), resume_deopt_id(),
+ UntaggedPcDescriptors::kOther, locs(), env());
#endif
}
diff --git a/runtime/vm/compiler/backend/il.h b/runtime/vm/compiler/backend/il.h
index 9f7562f..676dd00 100644
--- a/runtime/vm/compiler/backend/il.h
+++ b/runtime/vm/compiler/backend/il.h
@@ -529,7 +529,8 @@
M(Call1ArgStub, _) \
M(LoadThread, kNoGC) \
M(Deoptimize, kNoGC) \
- M(SimdOp, kNoGC)
+ M(SimdOp, kNoGC) \
+ M(Suspend, _)
#define FOR_EACH_ABSTRACT_INSTRUCTION(M) \
M(Allocation, _) \
@@ -9582,10 +9583,8 @@
class Call1ArgStubInstr : public TemplateDefinition<1, Throws> {
public:
enum class StubId {
- kAwait,
kInitAsync,
kInitAsyncStar,
- kYieldAsyncStar,
};
Call1ArgStubInstr(const InstructionSource& source,
@@ -9605,6 +9604,9 @@
virtual bool CanCallDart() const { return true; }
virtual bool ComputeCanDeoptimize() const { return true; }
virtual bool HasUnknownSideEffects() const { return true; }
+ virtual intptr_t NumberOfInputsConsumedBeforeCall() const {
+ return InputCount();
+ }
DECLARE_INSTRUCTION(Call1ArgStub);
PRINT_OPERANDS_TO_SUPPORT
@@ -9616,6 +9618,49 @@
DISALLOW_COPY_AND_ASSIGN(Call1ArgStubInstr);
};
+// Suspends execution using the suspend stub specified using [StubId].
+class SuspendInstr : public TemplateDefinition<1, Throws> {
+ public:
+ enum class StubId {
+ kAwait,
+ kYieldAsyncStar,
+ };
+
+ SuspendInstr(const InstructionSource& source,
+ StubId stub_id,
+ Value* operand,
+ intptr_t deopt_id,
+ intptr_t resume_deopt_id)
+ : TemplateDefinition(source, deopt_id),
+ stub_id_(stub_id),
+ resume_deopt_id_(resume_deopt_id),
+ token_pos_(source.token_pos) {
+ SetInputAt(0, operand);
+ }
+
+ Value* operand() const { return inputs_[0]; }
+ StubId stub_id() const { return stub_id_; }
+ intptr_t resume_deopt_id() const { return resume_deopt_id_; }
+ virtual TokenPosition token_pos() const { return token_pos_; }
+
+ virtual bool CanCallDart() const { return true; }
+ virtual bool ComputeCanDeoptimize() const { return true; }
+ virtual bool HasUnknownSideEffects() const { return true; }
+ virtual intptr_t NumberOfInputsConsumedBeforeCall() const {
+ return InputCount();
+ }
+
+ DECLARE_INSTRUCTION(Suspend);
+ PRINT_OPERANDS_TO_SUPPORT
+
+ private:
+ const StubId stub_id_;
+ const intptr_t resume_deopt_id_;
+ const TokenPosition token_pos_;
+
+ DISALLOW_COPY_AND_ASSIGN(SuspendInstr);
+};
+
#undef DECLARE_INSTRUCTION
class Environment : public ZoneAllocated {
diff --git a/runtime/vm/compiler/backend/il_ia32.cc b/runtime/vm/compiler/backend/il_ia32.cc
index 1513ce0..9d1ffa4 100644
--- a/runtime/vm/compiler/backend/il_ia32.cc
+++ b/runtime/vm/compiler/backend/il_ia32.cc
@@ -6503,8 +6503,8 @@
EBP, compiler::target::frame_layout.code_from_fp * kWordSize));
// Load instructions object (active_instructions and Code::entry_point() may
// not point to this instruction object any more; see Code::DisableDartCode).
- __ movl(target_reg, compiler::FieldAddress(
- target_reg, Code::saved_instructions_offset()));
+ __ movl(target_reg,
+ compiler::FieldAddress(target_reg, Code::instructions_offset()));
__ addl(target_reg,
compiler::Immediate(Instructions::HeaderSize() - kHeapObjectTag));
__ addl(target_reg, offset);
diff --git a/runtime/vm/compiler/backend/il_printer.cc b/runtime/vm/compiler/backend/il_printer.cc
index 8f983bd..fd5b452 100644
--- a/runtime/vm/compiler/backend/il_printer.cc
+++ b/runtime/vm/compiler/backend/il_printer.cc
@@ -1370,12 +1370,21 @@
case StubId::kInitAsync:
name = "InitAsync";
break;
- case StubId::kAwait:
- name = "Await";
- break;
case StubId::kInitAsyncStar:
name = "InitAsyncStar";
break;
+ }
+ f->Printf("%s(", name);
+ operand()->PrintTo(f);
+ f->AddString(")");
+}
+
+void SuspendInstr::PrintOperandsTo(BaseTextBuffer* f) const {
+ const char* name = "";
+ switch (stub_id_) {
+ case StubId::kAwait:
+ name = "Await";
+ break;
case StubId::kYieldAsyncStar:
name = "YieldAsyncStar";
break;
diff --git a/runtime/vm/compiler/backend/linearscan.cc b/runtime/vm/compiler/backend/linearscan.cc
index 8438490..0dafbb87 100644
--- a/runtime/vm/compiler/backend/linearscan.cc
+++ b/runtime/vm/compiler/backend/linearscan.cc
@@ -645,7 +645,7 @@
Definition* defn = (*catch_entry->initial_definitions())[i];
LiveRange* range = GetLiveRange(defn->ssa_temp_index());
range->DefineAt(catch_entry->start_pos()); // Defined at block entry.
- ProcessInitialDefinition(defn, range, catch_entry);
+ ProcessInitialDefinition(defn, range, catch_entry, i);
}
} else if (auto entry = block->AsBlockEntryWithInitialDefs()) {
ASSERT(block->IsFunctionEntry() || block->IsOsrEntry());
@@ -658,13 +658,13 @@
GetLiveRange(ToSecondPairVreg(defn->ssa_temp_index()));
range->AddUseInterval(entry->start_pos(), entry->start_pos() + 2);
range->DefineAt(entry->start_pos());
- ProcessInitialDefinition(defn, range, entry,
+ ProcessInitialDefinition(defn, range, entry, i,
/*second_location_for_definition=*/true);
}
LiveRange* range = GetLiveRange(defn->ssa_temp_index());
range->AddUseInterval(entry->start_pos(), entry->start_pos() + 2);
range->DefineAt(entry->start_pos());
- ProcessInitialDefinition(defn, range, entry);
+ ProcessInitialDefinition(defn, range, entry, i);
}
}
}
@@ -679,13 +679,13 @@
LiveRange* range = GetLiveRange(ToSecondPairVreg(defn->ssa_temp_index()));
range->AddUseInterval(graph_entry->start_pos(), graph_entry->end_pos());
range->DefineAt(graph_entry->start_pos());
- ProcessInitialDefinition(defn, range, graph_entry,
+ ProcessInitialDefinition(defn, range, graph_entry, i,
/*second_location_for_definition=*/true);
}
LiveRange* range = GetLiveRange(defn->ssa_temp_index());
range->AddUseInterval(graph_entry->start_pos(), graph_entry->end_pos());
range->DefineAt(graph_entry->start_pos());
- ProcessInitialDefinition(defn, range, graph_entry);
+ ProcessInitialDefinition(defn, range, graph_entry, i);
}
}
@@ -697,10 +697,45 @@
}
}
+bool FlowGraphAllocator::IsSuspendStateParameter(Definition* defn) {
+ if (auto param = defn->AsParameter()) {
+ if ((param->GetBlock()->IsOsrEntry() ||
+ param->GetBlock()->IsCatchBlockEntry()) &&
+ flow_graph_.SuspendStateVar() != nullptr &&
+ param->index() == flow_graph_.SuspendStateEnvIndex()) {
+ return true;
+ }
+ }
+ return false;
+}
+
+void FlowGraphAllocator::AllocateSpillSlotForInitialDefinition(
+ intptr_t slot_index,
+ intptr_t range_end) {
+ if (slot_index < spill_slots_.length()) {
+ // Multiple initial definitions could exist for the same spill slot
+ // as function could have both OsrEntry and CatchBlockEntry.
+ spill_slots_[slot_index] =
+ Utils::Maximum(spill_slots_[slot_index], range_end);
+ ASSERT(!quad_spill_slots_[slot_index]);
+ ASSERT(!untagged_spill_slots_[slot_index]);
+ } else {
+ while (spill_slots_.length() < slot_index) {
+ spill_slots_.Add(kMaxPosition);
+ quad_spill_slots_.Add(false);
+ untagged_spill_slots_.Add(false);
+ }
+ spill_slots_.Add(range_end);
+ quad_spill_slots_.Add(false);
+ untagged_spill_slots_.Add(false);
+ }
+}
+
void FlowGraphAllocator::ProcessInitialDefinition(
Definition* defn,
LiveRange* range,
BlockEntryInstr* block,
+ intptr_t initial_definition_index,
bool second_location_for_definition) {
// Save the range end because it may change below.
const intptr_t range_end = range->End();
@@ -779,21 +814,30 @@
Location spill_slot = range->spill_slot();
if (spill_slot.IsStackSlot() && spill_slot.base_reg() == FPREG &&
spill_slot.stack_index() <=
- compiler::target::frame_layout.first_local_from_fp) {
+ compiler::target::frame_layout.first_local_from_fp &&
+ !IsSuspendStateParameter(defn)) {
// On entry to the function, range is stored on the stack above the FP in
// the same space which is used for spill slots. Update spill slot state to
// reflect that and prevent register allocator from reusing this space as a
// spill slot.
- spill_slots_.Add(range_end);
- quad_spill_slots_.Add(false);
- untagged_spill_slots_.Add(false);
+ // Do not allocate spill slot for OSR parameter corresponding to
+ // a synthetic :suspend_state variable as it is already allocated
+ // in AllocateSpillSlotForSuspendState.
+ ASSERT(defn->IsParameter());
+ ASSERT(defn->AsParameter()->index() == initial_definition_index);
+ const intptr_t spill_slot_index =
+ -compiler::target::frame_layout.VariableIndexForFrameSlot(
+ spill_slot.stack_index());
+ AllocateSpillSlotForInitialDefinition(spill_slot_index, range_end);
// Note, all incoming parameters are assumed to be tagged.
MarkAsObjectAtSafepoints(range);
- } else if (defn->IsConstant() && block->IsCatchBlockEntry()) {
+ } else if (defn->IsConstant() && block->IsCatchBlockEntry() &&
+ (initial_definition_index >=
+ flow_graph_.num_direct_parameters())) {
// Constants at catch block entries consume spill slots.
- spill_slots_.Add(range_end);
- quad_spill_slots_.Add(false);
- untagged_spill_slots_.Add(false);
+ AllocateSpillSlotForInitialDefinition(
+ initial_definition_index - flow_graph_.num_direct_parameters(),
+ range_end);
}
}
@@ -994,26 +1038,45 @@
for (intptr_t i = 0; i < env->Length(); ++i) {
Value* value = env->ValueAt(i);
Definition* def = value->definition();
+
if (def->HasPairRepresentation()) {
locations[i] = Location::Pair(Location::Any(), Location::Any());
} else {
locations[i] = Location::Any();
}
+ if (env->outer() == nullptr && flow_graph_.SuspendStateVar() != nullptr &&
+ i == flow_graph_.SuspendStateEnvIndex()) {
+ // Make sure synthetic :suspend_state variable gets a correct
+ // location on the stack frame. It is used by deoptimization.
+ const intptr_t slot_index =
+ compiler::target::frame_layout.FrameSlotForVariable(
+ flow_graph_.parsed_function().suspend_state_var());
+ locations[i] = Location::StackSlot(slot_index, FPREG);
+ if (!def->IsConstant()) {
+ // Update live intervals for Parameter/Phi definitions
+ // corresponding to :suspend_state in OSR and try/catch cases as
+ // they are still used when resolving control flow.
+ ASSERT(def->IsParameter() || def->IsPhi());
+ ASSERT(!def->HasPairRepresentation());
+ LiveRange* range = GetLiveRange(def->ssa_temp_index());
+ range->AddUseInterval(block_start_pos, use_pos);
+ }
+ continue;
+ }
+
if (def->IsPushArgument()) {
// Frame size is unknown until after allocation.
locations[i] = Location::NoLocation();
continue;
}
- ConstantInstr* constant = def->AsConstant();
- if (constant != NULL) {
+ if (auto constant = def->AsConstant()) {
locations[i] = Location::Constant(constant);
continue;
}
- MaterializeObjectInstr* mat = def->AsMaterializeObject();
- if (mat != NULL) {
+ if (auto mat = def->AsMaterializeObject()) {
// MaterializeObject itself produces no value. But its uses
// are treated as part of the environment: allocated locations
// will be used when building deoptimization data.
diff --git a/runtime/vm/compiler/backend/linearscan.h b/runtime/vm/compiler/backend/linearscan.h
index 7c16c5f..8256a1a 100644
--- a/runtime/vm/compiler/backend/linearscan.h
+++ b/runtime/vm/compiler/backend/linearscan.h
@@ -147,6 +147,7 @@
void ProcessInitialDefinition(Definition* defn,
LiveRange* range,
BlockEntryInstr* block,
+ intptr_t initial_definition_index,
bool second_location_for_definition = false);
void ConnectIncomingPhiMoves(JoinEntryInstr* join);
void BlockLocation(Location loc, intptr_t from, intptr_t to);
@@ -249,6 +250,15 @@
// at all safepoints.
void UpdateStackmapsForSuspendState();
+ // Returns true if [defn] is an OsrEntry or CatchBlockEntry parameter
+ // corresponding to a synthetic :suspend_state variable.
+ bool IsSuspendStateParameter(Definition* defn);
+
+ // Allocates spill slot [slot_index] for the initial definition of
+ // OsrEntry or CatchBlockEntry (Parameter or Constant).
+ void AllocateSpillSlotForInitialDefinition(intptr_t slot_index,
+ intptr_t range_end);
+
// Allocate the given live range to a spill slot.
void Spill(LiveRange* range);
diff --git a/runtime/vm/compiler/backend/yield_position_test.cc b/runtime/vm/compiler/backend/yield_position_test.cc
index c28b700..edad705 100644
--- a/runtime/vm/compiler/backend/yield_position_test.cc
+++ b/runtime/vm/compiler/backend/yield_position_test.cc
@@ -12,11 +12,10 @@
namespace dart {
-using Pair = std::pair<intptr_t, TokenPosition>;
-using YieldPoints = ZoneGrowableArray<Pair>;
+using YieldPoints = ZoneGrowableArray<TokenPosition>;
-int LowestFirst(const Pair* a, const Pair* b) {
- return a->first - b->first;
+int LowestFirst(const TokenPosition* a, const TokenPosition* b) {
+ return a->Pos() - b->Pos();
}
static YieldPoints* GetYieldPointsFromGraph(FlowGraph* flow_graph) {
@@ -25,13 +24,8 @@
for (auto block : blocks) {
ForwardInstructionIterator it(block);
while (!it.Done()) {
- if (auto return_instr = it.Current()->AsReturn()) {
- if (return_instr->yield_index() !=
- UntaggedPcDescriptors::kInvalidYieldIndex) {
- ASSERT(return_instr->yield_index() > 0);
- array->Add(
- Pair(return_instr->yield_index(), return_instr->token_pos()));
- }
+ if (auto suspend_instr = it.Current()->AsSuspend()) {
+ array->Add(suspend_instr->token_pos());
}
it.Advance();
}
@@ -46,7 +40,7 @@
PcDescriptors::Iterator it(pc_descriptor, UntaggedPcDescriptors::kOther);
while (it.MoveNext()) {
if (it.YieldIndex() != UntaggedPcDescriptors::kInvalidYieldIndex) {
- array->Add(Pair(it.YieldIndex(), it.TokenPos()));
+ array->Add(it.TokenPos());
}
}
array->Sort(LowestFirst);
@@ -75,13 +69,7 @@
// function for the inner closure.
Invoke(root_library, "foo");
- const auto& outer_function =
- Function::Handle(GetFunction(root_library, "foo"));
-
- // Grab the inner, lazily created, closure from the object store.
- const auto& function = Function::Handle(
- ClosureFunctionsCache::GetUniqueInnerClosure(outer_function));
- RELEASE_ASSERT(function.IsFunction());
+ const auto& function = Function::Handle(GetFunction(root_library, "foo"));
// Ensure we have 3 different return instructions with yield indices attached
// to them.
@@ -93,12 +81,9 @@
auto validate_indices = [](const YieldPoints& yield_points) {
EXPECT_EQ(3, yield_points.length());
- EXPECT_EQ(1, yield_points[0].first);
- EXPECT_EQ(88, yield_points[0].second.Pos());
- EXPECT_EQ(2, yield_points[1].first);
- EXPECT_EQ(129, yield_points[1].second.Pos());
- EXPECT_EQ(3, yield_points[2].first);
- EXPECT_EQ(170, yield_points[2].second.Pos());
+ EXPECT_EQ(88, yield_points[0].Pos());
+ EXPECT_EQ(129, yield_points[1].Pos());
+ EXPECT_EQ(170, yield_points[2].Pos());
};
validate_indices(*GetYieldPointsFromGraph(flow_graph));
diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
index a1f6765..2badb5f 100644
--- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
+++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
@@ -699,8 +699,8 @@
Call1ArgStubInstr::StubId::kInitAsyncStar);
body += Drop();
body += NullConstant();
- body += B->Call1ArgStub(TokenPosition::kNoSource,
- Call1ArgStubInstr::StubId::kYieldAsyncStar);
+ body += B->Suspend(TokenPosition::kNoSource,
+ SuspendInstr::StubId::kYieldAsyncStar);
body += Drop();
}
return body;
@@ -4373,7 +4373,10 @@
instructions += BuildExpression(); // read operand.
- instructions += B->Call1ArgStub(pos, Call1ArgStubInstr::StubId::kAwait);
+ if (NeedsDebugStepCheck(parsed_function()->function(), pos)) {
+ instructions += DebugStepCheck(pos);
+ }
+ instructions += B->Suspend(pos, SuspendInstr::StubId::kAwait);
return instructions;
}
@@ -5305,6 +5308,9 @@
instructions += LoadNativeField(Slot::SuspendState_function_data());
instructions += BuildExpression(); // read expression.
+ if (NeedsDebugStepCheck(parsed_function()->function(), pos)) {
+ instructions += DebugStepCheck(pos);
+ }
auto& add_method = Function::ZoneHandle(Z);
const bool is_yield_star = (flags & kYieldStatementFlagYieldStar) != 0;
@@ -5314,15 +5320,15 @@
} else {
add_method = IG->object_store()->async_star_stream_controller_add();
}
- instructions += StaticCall(pos, add_method, 2, ICData::kNoRebind);
+ instructions +=
+ StaticCall(TokenPosition::kNoSource, add_method, 2, ICData::kNoRebind);
if (is_yield_star) {
// Discard result of _AsyncStarStreamController.addStream().
instructions += Drop();
// Suspend and test value passed to the resumed async* body.
instructions += NullConstant();
- instructions +=
- B->Call1ArgStub(pos, Call1ArgStubInstr::StubId::kYieldAsyncStar);
+ instructions += B->Suspend(pos, SuspendInstr::StubId::kYieldAsyncStar);
} else {
// Test value returned by _AsyncStarStreamController.add().
}
@@ -5339,8 +5345,7 @@
instructions = Fragment(instructions.entry, continue_execution);
if (!is_yield_star) {
instructions += NullConstant();
- instructions +=
- B->Call1ArgStub(pos, Call1ArgStubInstr::StubId::kYieldAsyncStar);
+ instructions += B->Suspend(pos, SuspendInstr::StubId::kYieldAsyncStar);
instructions += Drop();
}
@@ -5586,9 +5591,6 @@
}
if (function_node_helper.async_marker_ == FunctionNodeHelper::kAsync) {
- if (!FLAG_precompiled_mode) {
- FATAL("Compact async functions are only supported in AOT mode.");
- }
function.set_modifier(UntaggedFunction::kAsync);
function.set_is_debuggable(true);
function.set_is_inlinable(false);
@@ -5596,9 +5598,6 @@
ASSERT(function.IsCompactAsyncFunction());
} else if (function_node_helper.async_marker_ ==
FunctionNodeHelper::kAsyncStar) {
- if (!FLAG_precompiled_mode) {
- FATAL("Compact async* functions are only supported in AOT mode.");
- }
function.set_modifier(UntaggedFunction::kAsyncGen);
function.set_is_debuggable(true);
function.set_is_inlinable(false);
diff --git a/runtime/vm/compiler/frontend/kernel_to_il.cc b/runtime/vm/compiler/frontend/kernel_to_il.cc
index 8a20c37..4d50fc7 100644
--- a/runtime/vm/compiler/frontend/kernel_to_il.cc
+++ b/runtime/vm/compiler/frontend/kernel_to_il.cc
@@ -4254,6 +4254,15 @@
return Fragment(instr);
}
+Fragment FlowGraphBuilder::Suspend(TokenPosition position,
+ SuspendInstr::StubId stub_id) {
+ SuspendInstr* instr =
+ new (Z) SuspendInstr(InstructionSource(position), stub_id, Pop(),
+ GetNextDeoptId(), GetNextDeoptId());
+ Push(instr);
+ return Fragment(instr);
+}
+
Fragment FlowGraphBuilder::WrapTypedDataBaseInCompound(
const AbstractType& compound_type) {
const auto& compound_sub_class =
diff --git a/runtime/vm/compiler/frontend/kernel_to_il.h b/runtime/vm/compiler/frontend/kernel_to_il.h
index ff641cc..fcb4245 100644
--- a/runtime/vm/compiler/frontend/kernel_to_il.h
+++ b/runtime/vm/compiler/frontend/kernel_to_il.h
@@ -424,6 +424,9 @@
Fragment Call1ArgStub(TokenPosition position,
Call1ArgStubInstr::StubId stub_id);
+ // Generates Suspend instruction.
+ Fragment Suspend(TokenPosition position, SuspendInstr::StubId stub_id);
+
LocalVariable* LookupVariable(intptr_t kernel_offset);
// Build type argument type checks for the current function.
diff --git a/runtime/vm/compiler/frontend/kernel_translation_helper.cc b/runtime/vm/compiler/frontend/kernel_translation_helper.cc
index d52cc58..7dba48a 100644
--- a/runtime/vm/compiler/frontend/kernel_translation_helper.cc
+++ b/runtime/vm/compiler/frontend/kernel_translation_helper.cc
@@ -1891,9 +1891,11 @@
Zone* zone = thread->zone();
intptr_t unit_count = helper_->ReadUInt();
Array& loading_units = Array::Handle(zone, Array::New(unit_count + 1));
+ Array& loading_unit_uris = Array::Handle(zone, Array::New(unit_count + 1));
LoadingUnit& unit = LoadingUnit::Handle(zone);
LoadingUnit& parent = LoadingUnit::Handle(zone);
Library& lib = Library::Handle(zone);
+ Array& uris = Array::Handle(zone);
for (int i = 0; i < unit_count; i++) {
intptr_t id = helper_->ReadUInt();
@@ -1907,6 +1909,7 @@
unit.set_parent(parent);
intptr_t library_count = helper_->ReadUInt();
+ uris = Array::New(library_count);
for (intptr_t j = 0; j < library_count; j++) {
const String& uri =
translation_helper_.DartSymbolPlain(helper_->ReadStringReference());
@@ -1915,14 +1918,18 @@
FATAL1("Missing library: %s\n", uri.ToCString());
}
lib.set_loading_unit(unit);
+ uris.SetAt(j, uri);
}
loading_units.SetAt(id, unit);
+ loading_unit_uris.SetAt(id, uris);
}
ObjectStore* object_store = IG->object_store();
ASSERT(object_store->loading_units() == Array::null());
object_store->set_loading_units(loading_units);
+ ASSERT(object_store->loading_unit_uris() == Array::null());
+ object_store->set_loading_unit_uris(loading_unit_uris);
}
CallSiteAttributesMetadataHelper::CallSiteAttributesMetadataHelper(
diff --git a/runtime/vm/compiler/runtime_api.h b/runtime/vm/compiler/runtime_api.h
index 3ce510e..723e277 100644
--- a/runtime/vm/compiler/runtime_api.h
+++ b/runtime/vm/compiler/runtime_api.h
@@ -993,6 +993,7 @@
class SuspendState : public AllStatic {
public:
+ static word frame_capacity_offset();
static word frame_size_offset();
static word pc_offset();
static word function_data_offset();
@@ -1003,6 +1004,8 @@
static word HeaderSize();
static word InstanceSize();
static word InstanceSize(word payload_size);
+ static word FrameSizeGrowthGap();
+
FINAL_CLASS();
};
@@ -1203,6 +1206,10 @@
static word null_cast_error_shared_with_fpu_regs_stub_offset();
static word range_error_shared_without_fpu_regs_stub_offset();
static word range_error_shared_with_fpu_regs_stub_offset();
+ static word resume_stub_offset();
+ static word return_async_not_future_stub_offset();
+ static word return_async_star_stub_offset();
+ static word return_async_stub_offset();
static word stack_overflow_shared_without_fpu_regs_entry_point_offset();
static word stack_overflow_shared_without_fpu_regs_stub_offset();
static word stack_overflow_shared_with_fpu_regs_entry_point_offset();
@@ -1214,6 +1221,7 @@
static word allocate_object_stub_offset();
static word allocate_object_parameterized_stub_offset();
static word allocate_object_slow_stub_offset();
+ static word async_exception_handler_stub_offset();
static word optimize_stub_offset();
static word deoptimize_stub_offset();
static word enter_safepoint_stub_offset();
@@ -1276,6 +1284,15 @@
static word int_type_offset();
static word string_type_offset();
static word type_type_offset();
+
+ static word suspend_state_await_offset();
+ static word suspend_state_handle_exception_offset();
+ static word suspend_state_init_async_offset();
+ static word suspend_state_init_async_star_offset();
+ static word suspend_state_return_async_offset();
+ static word suspend_state_return_async_not_future_offset();
+ static word suspend_state_return_async_star_offset();
+ static word suspend_state_yield_async_star_offset();
};
class Isolate : public AllStatic {
@@ -1287,6 +1304,7 @@
static word finalizers_offset();
#if !defined(PRODUCT)
static word single_step_offset();
+ static word has_resumption_breakpoints_offset();
#endif // !defined(PRODUCT)
};
@@ -1355,7 +1373,8 @@
static word object_pool_offset();
static word entry_point_offset(CodeEntryKind kind = CodeEntryKind::kNormal);
- static word saved_instructions_offset();
+ static word active_instructions_offset();
+ static word instructions_offset();
static word owner_offset();
static word HeaderSize();
static word InstanceSize();
diff --git a/runtime/vm/compiler/runtime_offsets_extracted.h b/runtime/vm/compiler/runtime_offsets_extracted.h
index c3a19ca..fa6301e 100644
--- a/runtime/vm/compiler/runtime_offsets_extracted.h
+++ b/runtime/vm/compiler/runtime_offsets_extracted.h
@@ -18,10 +18,14 @@
#if !defined(PRODUCT)
#if defined(TARGET_ARCH_ARM) && !defined(DART_COMPRESSED_POINTERS)
+static constexpr dart::compiler::target::word Code_active_instructions_offset =
+ 56;
static constexpr dart::compiler::target::word Function_usage_counter_offset =
72;
static constexpr dart::compiler::target::word
ICData_receivers_static_type_offset = 16;
+static constexpr dart::compiler::target::word
+ SuspendState_frame_capacity_offset = 4;
static constexpr dart::compiler::target::word Array_elements_start_offset = 12;
static constexpr dart::compiler::target::word Array_element_size = 4;
static constexpr dart::compiler::target::word ClassTable_elements_start_offset =
@@ -132,9 +136,8 @@
Closure_instantiator_type_arguments_offset = 4;
static constexpr dart::compiler::target::word
ClosureData_default_type_arguments_kind_offset = 16;
+static constexpr dart::compiler::target::word Code_instructions_offset = 24;
static constexpr dart::compiler::target::word Code_object_pool_offset = 20;
-static constexpr dart::compiler::target::word Code_saved_instructions_offset =
- 24;
static constexpr dart::compiler::target::word Code_owner_offset = 28;
static constexpr dart::compiler::target::word Context_num_variables_offset = 4;
static constexpr dart::compiler::target::word Context_parent_offset = 8;
@@ -182,6 +185,8 @@
static constexpr dart::compiler::target::word Isolate_current_tag_offset = 24;
static constexpr dart::compiler::target::word Isolate_default_tag_offset = 28;
static constexpr dart::compiler::target::word Isolate_finalizers_offset = 40;
+static constexpr dart::compiler::target::word
+ Isolate_has_resumption_breakpoints_offset = 45;
static constexpr dart::compiler::target::word Isolate_ic_miss_code_offset = 32;
static constexpr dart::compiler::target::word IsolateGroup_object_store_offset =
20;
@@ -224,6 +229,22 @@
188;
static constexpr dart::compiler::target::word ObjectStore_type_type_offset =
112;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_await_offset = 504;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_handle_exception_offset = 528;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_offset = 500;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_star_offset = 516;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_offset = 508;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_not_future_offset = 512;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_star_offset = 524;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_yield_async_star_offset = 520;
static constexpr dart::compiler::target::word OneByteString_data_offset = 12;
static constexpr dart::compiler::target::word PointerBase_data_offset = 4;
static constexpr dart::compiler::target::word Pointer_type_arguments_offset = 8;
@@ -242,124 +263,128 @@
static constexpr dart::compiler::target::word String_hash_offset = 8;
static constexpr dart::compiler::target::word String_length_offset = 4;
static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 4;
+static constexpr dart::compiler::target::word SuspendState_FrameSizeGrowthGap =
+ 2;
static constexpr dart::compiler::target::word
- SuspendState_error_callback_offset = 20;
+ SuspendState_error_callback_offset = 24;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
- 4;
+ 8;
static constexpr dart::compiler::target::word
- SuspendState_function_data_offset = 12;
-static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
-static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
+ SuspendState_function_data_offset = 16;
+static constexpr dart::compiler::target::word SuspendState_payload_offset = 28;
+static constexpr dart::compiler::target::word SuspendState_pc_offset = 12;
static constexpr dart::compiler::target::word
- SuspendState_then_callback_offset = 16;
+ SuspendState_then_callback_offset = 20;
static constexpr dart::compiler::target::word
- Thread_AllocateArray_entry_point_offset = 380;
+ Thread_AllocateArray_entry_point_offset = 400;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 792;
+ 816;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 796;
+ 820;
static constexpr dart::compiler::target::word
- Thread_array_write_barrier_entry_point_offset = 272;
+ Thread_array_write_barrier_entry_point_offset = 292;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_with_fpu_regs_entry_point_offset = 280;
+ Thread_allocate_mint_with_fpu_regs_entry_point_offset = 300;
static constexpr dart::compiler::target::word
Thread_allocate_mint_with_fpu_regs_stub_offset = 184;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_without_fpu_regs_entry_point_offset = 284;
+ Thread_allocate_mint_without_fpu_regs_entry_point_offset = 304;
static constexpr dart::compiler::target::word
Thread_allocate_mint_without_fpu_regs_stub_offset = 188;
static constexpr dart::compiler::target::word
- Thread_allocate_object_entry_point_offset = 288;
+ Thread_allocate_object_entry_point_offset = 308;
static constexpr dart::compiler::target::word
Thread_allocate_object_stub_offset = 192;
static constexpr dart::compiler::target::word
- Thread_allocate_object_parameterized_entry_point_offset = 292;
+ Thread_allocate_object_parameterized_entry_point_offset = 312;
static constexpr dart::compiler::target::word
Thread_allocate_object_parameterized_stub_offset = 196;
static constexpr dart::compiler::target::word
- Thread_allocate_object_slow_entry_point_offset = 296;
+ Thread_allocate_object_slow_entry_point_offset = 316;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 832;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 856;
static constexpr dart::compiler::target::word
- Thread_auto_scope_native_wrapper_entry_point_offset = 344;
+ Thread_async_exception_handler_stub_offset = 204;
+static constexpr dart::compiler::target::word
+ Thread_auto_scope_native_wrapper_entry_point_offset = 364;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
static constexpr dart::compiler::target::word Thread_bool_true_offset = 116;
static constexpr dart::compiler::target::word
- Thread_bootstrap_native_wrapper_entry_point_offset = 336;
+ Thread_bootstrap_native_wrapper_entry_point_offset = 356;
static constexpr dart::compiler::target::word
- Thread_call_to_runtime_entry_point_offset = 276;
+ Thread_call_to_runtime_entry_point_offset = 296;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 856;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 880;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 44;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 836;
+ Thread_double_truncate_round_supported_offset = 860;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 860;
+ Thread_service_extension_stream_offset = 884;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
- 316;
-static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
+ 336;
+static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset =
- 320;
+ 340;
static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
- 232;
+ 252;
static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
- 360;
+ 380;
static constexpr dart::compiler::target::word
- Thread_double_negate_address_offset = 356;
+ Thread_double_negate_address_offset = 376;
static constexpr dart::compiler::target::word Thread_end_offset = 52;
static constexpr dart::compiler::target::word
- Thread_enter_safepoint_stub_offset = 252;
+ Thread_enter_safepoint_stub_offset = 272;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 812;
+ 836;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_stub_offset = 256;
+ Thread_exit_safepoint_stub_offset = 276;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 260;
+ Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 280;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_stub_offset = 264;
+ Thread_call_native_through_safepoint_stub_offset = 284;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_entry_point_offset = 324;
+ Thread_call_native_through_safepoint_entry_point_offset = 344;
static constexpr dart::compiler::target::word
Thread_fix_allocation_stub_code_offset = 132;
static constexpr dart::compiler::target::word
Thread_fix_callers_target_code_offset = 128;
static constexpr dart::compiler::target::word
- Thread_float_absolute_address_offset = 372;
+ Thread_float_absolute_address_offset = 392;
static constexpr dart::compiler::target::word
- Thread_float_negate_address_offset = 368;
+ Thread_float_negate_address_offset = 388;
static constexpr dart::compiler::target::word Thread_float_not_address_offset =
- 364;
+ 384;
static constexpr dart::compiler::target::word
- Thread_float_zerow_address_offset = 376;
+ Thread_float_zerow_address_offset = 396;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 800;
+ 824;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 136;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 828;
+ 852;
static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 864;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 888;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
64;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_return_stub_offset = 236;
+ Thread_lazy_deopt_from_return_stub_offset = 256;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_throw_stub_offset = 240;
+ Thread_lazy_deopt_from_throw_stub_offset = 260;
static constexpr dart::compiler::target::word
- Thread_lazy_specialize_type_test_stub_offset = 248;
+ Thread_lazy_specialize_type_test_stub_offset = 268;
static constexpr dart::compiler::target::word
Thread_marking_stack_block_offset = 80;
static constexpr dart::compiler::target::word
- Thread_megamorphic_call_checked_entry_offset = 308;
+ Thread_megamorphic_call_checked_entry_offset = 328;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_entry_offset = 312;
+ Thread_switchable_call_miss_entry_offset = 332;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_stub_offset = 212;
+ Thread_switchable_call_miss_stub_offset = 232;
static constexpr dart::compiler::target::word
- Thread_no_scope_native_wrapper_entry_point_offset = 340;
+ Thread_no_scope_native_wrapper_entry_point_offset = 360;
static constexpr dart::compiler::target::word
Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 148;
static constexpr dart::compiler::target::word
@@ -380,49 +405,56 @@
Thread_range_error_shared_with_fpu_regs_stub_offset = 180;
static constexpr dart::compiler::target::word
Thread_range_error_shared_without_fpu_regs_stub_offset = 176;
+static constexpr dart::compiler::target::word Thread_resume_stub_offset = 208;
+static constexpr dart::compiler::target::word
+ Thread_return_async_not_future_stub_offset = 216;
+static constexpr dart::compiler::target::word
+ Thread_return_async_star_stub_offset = 220;
+static constexpr dart::compiler::target::word Thread_return_async_stub_offset =
+ 212;
static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
static constexpr dart::compiler::target::word
- Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 804;
+ Thread_predefined_symbols_address_offset = 368;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 828;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 808;
+ Thread_saved_shadow_call_stack_offset = 832;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 816;
+ 840;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_stub_offset = 244;
+ Thread_slow_type_test_stub_offset = 264;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_entry_point_offset = 332;
+ Thread_slow_type_test_entry_point_offset = 352;
static constexpr dart::compiler::target::word Thread_stack_limit_offset = 28;
static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
56;
static constexpr dart::compiler::target::word
Thread_stack_overflow_flags_offset = 60;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 304;
+ Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 324;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 208;
+ Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 228;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 300;
+ Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 320;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 204;
+ Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 224;
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
76;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_entry_point_offset = 764;
+ Thread_suspend_state_await_entry_point_offset = 788;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_entry_point_offset = 760;
+ Thread_suspend_state_init_async_entry_point_offset = 784;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_entry_point_offset = 768;
+ Thread_suspend_state_return_async_entry_point_offset = 792;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_not_future_entry_point_offset = 772;
+ Thread_suspend_state_return_async_not_future_entry_point_offset = 796;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_star_entry_point_offset = 776;
+ Thread_suspend_state_init_async_star_entry_point_offset = 800;
static constexpr dart::compiler::target::word
- Thread_suspend_state_yield_async_star_entry_point_offset = 780;
+ Thread_suspend_state_yield_async_star_entry_point_offset = 804;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_star_entry_point_offset = 784;
+ Thread_suspend_state_return_async_star_entry_point_offset = 808;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 788;
+ Thread_suspend_state_handle_exception_entry_point_offset = 812;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 72;
static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -433,17 +465,17 @@
Thread_unboxed_double_runtime_arg_offset = 104;
static constexpr dart::compiler::target::word Thread_vm_tag_offset = 88;
static constexpr dart::compiler::target::word
- Thread_write_barrier_entry_point_offset = 268;
+ Thread_write_barrier_entry_point_offset = 288;
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
32;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 820;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 844;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 824;
-static constexpr dart::compiler::target::word Thread_random_offset = 840;
+ Thread_callback_stack_return_offset = 848;
+static constexpr dart::compiler::target::word Thread_random_offset = 864;
static constexpr dart::compiler::target::word
- Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 848;
+ Thread_jump_to_frame_entry_point_offset = 348;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 872;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -536,7 +568,7 @@
4, 12, 8, 16};
static constexpr dart::compiler::target::word
Thread_write_barrier_wrappers_thread_offset[] = {
- 728, 732, 736, 740, 744, -1, 748, -1, 752, 756, -1, -1, -1, -1, -1, -1};
+ 752, 756, 760, 764, 768, -1, 772, -1, 776, 780, -1, -1, -1, -1, -1, -1};
static constexpr dart::compiler::target::word AbstractType_InstanceSize = 12;
static constexpr dart::compiler::target::word ApiError_InstanceSize = 8;
static constexpr dart::compiler::target::word Array_header_size = 12;
@@ -610,7 +642,7 @@
static constexpr dart::compiler::target::word SingleTargetCache_InstanceSize =
16;
static constexpr dart::compiler::target::word StackTrace_InstanceSize = 20;
-static constexpr dart::compiler::target::word SuspendState_HeaderSize = 24;
+static constexpr dart::compiler::target::word SuspendState_HeaderSize = 28;
static constexpr dart::compiler::target::word String_InstanceSize = 12;
static constexpr dart::compiler::target::word SubtypeTestCache_InstanceSize = 8;
static constexpr dart::compiler::target::word LoadingUnit_InstanceSize = 20;
@@ -635,10 +667,14 @@
#endif // defined(TARGET_ARCH_ARM) && !defined(DART_COMPRESSED_POINTERS)
#if defined(TARGET_ARCH_X64) && !defined(DART_COMPRESSED_POINTERS)
+static constexpr dart::compiler::target::word Code_active_instructions_offset =
+ 112;
static constexpr dart::compiler::target::word Function_usage_counter_offset =
112;
static constexpr dart::compiler::target::word
ICData_receivers_static_type_offset = 32;
+static constexpr dart::compiler::target::word
+ SuspendState_frame_capacity_offset = 8;
static constexpr dart::compiler::target::word Array_elements_start_offset = 24;
static constexpr dart::compiler::target::word Array_element_size = 8;
static constexpr dart::compiler::target::word ClassTable_elements_start_offset =
@@ -752,9 +788,8 @@
Closure_instantiator_type_arguments_offset = 8;
static constexpr dart::compiler::target::word
ClosureData_default_type_arguments_kind_offset = 32;
+static constexpr dart::compiler::target::word Code_instructions_offset = 48;
static constexpr dart::compiler::target::word Code_object_pool_offset = 40;
-static constexpr dart::compiler::target::word Code_saved_instructions_offset =
- 48;
static constexpr dart::compiler::target::word Code_owner_offset = 56;
static constexpr dart::compiler::target::word Context_num_variables_offset = 8;
static constexpr dart::compiler::target::word Context_parent_offset = 16;
@@ -802,6 +837,8 @@
static constexpr dart::compiler::target::word Isolate_current_tag_offset = 48;
static constexpr dart::compiler::target::word Isolate_default_tag_offset = 56;
static constexpr dart::compiler::target::word Isolate_finalizers_offset = 80;
+static constexpr dart::compiler::target::word
+ Isolate_has_resumption_breakpoints_offset = 89;
static constexpr dart::compiler::target::word Isolate_ic_miss_code_offset = 64;
static constexpr dart::compiler::target::word IsolateGroup_object_store_offset =
40;
@@ -844,6 +881,22 @@
376;
static constexpr dart::compiler::target::word ObjectStore_type_type_offset =
224;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_await_offset = 1008;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_handle_exception_offset = 1056;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_offset = 1000;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_star_offset = 1032;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_offset = 1016;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_not_future_offset = 1024;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_star_offset = 1048;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_yield_async_star_offset = 1040;
static constexpr dart::compiler::target::word OneByteString_data_offset = 16;
static constexpr dart::compiler::target::word PointerBase_data_offset = 8;
static constexpr dart::compiler::target::word Pointer_type_arguments_offset =
@@ -863,126 +916,130 @@
static constexpr dart::compiler::target::word String_hash_offset = 4;
static constexpr dart::compiler::target::word String_length_offset = 8;
static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8;
+static constexpr dart::compiler::target::word SuspendState_FrameSizeGrowthGap =
+ 2;
static constexpr dart::compiler::target::word
- SuspendState_error_callback_offset = 40;
+ SuspendState_error_callback_offset = 48;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
- 8;
+ 16;
static constexpr dart::compiler::target::word
- SuspendState_function_data_offset = 24;
-static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
-static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
+ SuspendState_function_data_offset = 32;
+static constexpr dart::compiler::target::word SuspendState_payload_offset = 56;
+static constexpr dart::compiler::target::word SuspendState_pc_offset = 24;
static constexpr dart::compiler::target::word
- SuspendState_then_callback_offset = 32;
+ SuspendState_then_callback_offset = 40;
static constexpr dart::compiler::target::word
- Thread_AllocateArray_entry_point_offset = 736;
+ Thread_AllocateArray_entry_point_offset = 776;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1584;
+ 1632;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 1592;
+ 1640;
static constexpr dart::compiler::target::word
- Thread_array_write_barrier_entry_point_offset = 520;
+ Thread_array_write_barrier_entry_point_offset = 560;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_with_fpu_regs_entry_point_offset = 536;
+ Thread_allocate_mint_with_fpu_regs_entry_point_offset = 576;
static constexpr dart::compiler::target::word
Thread_allocate_mint_with_fpu_regs_stub_offset = 344;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_without_fpu_regs_entry_point_offset = 544;
+ Thread_allocate_mint_without_fpu_regs_entry_point_offset = 584;
static constexpr dart::compiler::target::word
Thread_allocate_mint_without_fpu_regs_stub_offset = 352;
static constexpr dart::compiler::target::word
- Thread_allocate_object_entry_point_offset = 552;
+ Thread_allocate_object_entry_point_offset = 592;
static constexpr dart::compiler::target::word
Thread_allocate_object_stub_offset = 360;
static constexpr dart::compiler::target::word
- Thread_allocate_object_parameterized_entry_point_offset = 560;
+ Thread_allocate_object_parameterized_entry_point_offset = 600;
static constexpr dart::compiler::target::word
Thread_allocate_object_parameterized_stub_offset = 368;
static constexpr dart::compiler::target::word
- Thread_allocate_object_slow_entry_point_offset = 568;
+ Thread_allocate_object_slow_entry_point_offset = 608;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1664;
+ 1712;
static constexpr dart::compiler::target::word
- Thread_auto_scope_native_wrapper_entry_point_offset = 664;
+ Thread_async_exception_handler_stub_offset = 384;
+static constexpr dart::compiler::target::word
+ Thread_auto_scope_native_wrapper_entry_point_offset = 704;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
static constexpr dart::compiler::target::word Thread_bool_true_offset = 208;
static constexpr dart::compiler::target::word
- Thread_bootstrap_native_wrapper_entry_point_offset = 648;
+ Thread_bootstrap_native_wrapper_entry_point_offset = 688;
static constexpr dart::compiler::target::word
- Thread_call_to_runtime_entry_point_offset = 528;
+ Thread_call_to_runtime_entry_point_offset = 568;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1704;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1752;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 1672;
+ Thread_double_truncate_round_supported_offset = 1720;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 1712;
+ Thread_service_extension_stream_offset = 1760;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
- 608;
-static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
+ 648;
+static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 472;
static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset =
- 616;
+ 656;
static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
- 440;
+ 480;
static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
- 696;
+ 736;
static constexpr dart::compiler::target::word
- Thread_double_negate_address_offset = 688;
+ Thread_double_negate_address_offset = 728;
static constexpr dart::compiler::target::word Thread_end_offset = 104;
static constexpr dart::compiler::target::word
- Thread_enter_safepoint_stub_offset = 480;
+ Thread_enter_safepoint_stub_offset = 520;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1624;
+ 1672;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_stub_offset = 488;
+ Thread_exit_safepoint_stub_offset = 528;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 496;
+ Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 536;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_stub_offset = 504;
+ Thread_call_native_through_safepoint_stub_offset = 544;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_entry_point_offset = 624;
+ Thread_call_native_through_safepoint_entry_point_offset = 664;
static constexpr dart::compiler::target::word
Thread_fix_allocation_stub_code_offset = 240;
static constexpr dart::compiler::target::word
Thread_fix_callers_target_code_offset = 232;
static constexpr dart::compiler::target::word
- Thread_float_absolute_address_offset = 720;
+ Thread_float_absolute_address_offset = 760;
static constexpr dart::compiler::target::word
- Thread_float_negate_address_offset = 712;
+ Thread_float_negate_address_offset = 752;
static constexpr dart::compiler::target::word Thread_float_not_address_offset =
- 704;
+ 744;
static constexpr dart::compiler::target::word
- Thread_float_zerow_address_offset = 728;
+ Thread_float_zerow_address_offset = 768;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1600;
+ 1648;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1656;
+ 1704;
static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word Thread_isolate_group_offset =
- 1720;
+ 1768;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
128;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_return_stub_offset = 448;
+ Thread_lazy_deopt_from_return_stub_offset = 488;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_throw_stub_offset = 456;
+ Thread_lazy_deopt_from_throw_stub_offset = 496;
static constexpr dart::compiler::target::word
- Thread_lazy_specialize_type_test_stub_offset = 472;
+ Thread_lazy_specialize_type_test_stub_offset = 512;
static constexpr dart::compiler::target::word
Thread_marking_stack_block_offset = 160;
static constexpr dart::compiler::target::word
- Thread_megamorphic_call_checked_entry_offset = 592;
+ Thread_megamorphic_call_checked_entry_offset = 632;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_entry_offset = 600;
+ Thread_switchable_call_miss_entry_offset = 640;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_stub_offset = 400;
+ Thread_switchable_call_miss_stub_offset = 440;
static constexpr dart::compiler::target::word
- Thread_no_scope_native_wrapper_entry_point_offset = 656;
+ Thread_no_scope_native_wrapper_entry_point_offset = 696;
static constexpr dart::compiler::target::word
Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 272;
static constexpr dart::compiler::target::word
@@ -1003,49 +1060,56 @@
Thread_range_error_shared_with_fpu_regs_stub_offset = 336;
static constexpr dart::compiler::target::word
Thread_range_error_shared_without_fpu_regs_stub_offset = 328;
+static constexpr dart::compiler::target::word Thread_resume_stub_offset = 392;
+static constexpr dart::compiler::target::word
+ Thread_return_async_not_future_stub_offset = 408;
+static constexpr dart::compiler::target::word
+ Thread_return_async_star_stub_offset = 416;
+static constexpr dart::compiler::target::word Thread_return_async_stub_offset =
+ 400;
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
- Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1608;
+ Thread_predefined_symbols_address_offset = 712;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1656;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1616;
+ Thread_saved_shadow_call_stack_offset = 1664;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1632;
+ 1680;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_stub_offset = 464;
+ Thread_slow_type_test_stub_offset = 504;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_entry_point_offset = 640;
+ Thread_slow_type_test_entry_point_offset = 680;
static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56;
static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
112;
static constexpr dart::compiler::target::word
Thread_stack_overflow_flags_offset = 120;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 584;
+ Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 624;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 392;
+ Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 432;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 576;
+ Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 616;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 384;
+ Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 424;
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
152;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_entry_point_offset = 1528;
+ Thread_suspend_state_await_entry_point_offset = 1576;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_entry_point_offset = 1520;
+ Thread_suspend_state_init_async_entry_point_offset = 1568;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_entry_point_offset = 1536;
+ Thread_suspend_state_return_async_entry_point_offset = 1584;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
+ Thread_suspend_state_return_async_not_future_entry_point_offset = 1592;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+ Thread_suspend_state_init_async_star_entry_point_offset = 1600;
static constexpr dart::compiler::target::word
- Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+ Thread_suspend_state_yield_async_star_entry_point_offset = 1608;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+ Thread_suspend_state_return_async_star_entry_point_offset = 1616;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 1576;
+ Thread_suspend_state_handle_exception_entry_point_offset = 1624;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -1056,18 +1120,18 @@
Thread_unboxed_double_runtime_arg_offset = 192;
static constexpr dart::compiler::target::word Thread_vm_tag_offset = 176;
static constexpr dart::compiler::target::word
- Thread_write_barrier_entry_point_offset = 512;
+ Thread_write_barrier_entry_point_offset = 552;
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
64;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1640;
+ 1688;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 1648;
-static constexpr dart::compiler::target::word Thread_random_offset = 1680;
+ Thread_callback_stack_return_offset = 1696;
+static constexpr dart::compiler::target::word Thread_random_offset = 1728;
static constexpr dart::compiler::target::word
- Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1688;
+ Thread_jump_to_frame_entry_point_offset = 672;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1736;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -1162,8 +1226,8 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
Thread_write_barrier_wrappers_thread_offset[] = {
- 1432, 1440, 1448, 1456, -1, -1, 1464, 1472,
- 1480, 1488, 1496, -1, 1504, 1512, -1, -1};
+ 1480, 1488, 1496, 1504, -1, -1, 1512, 1520,
+ 1528, 1536, 1544, -1, 1552, 1560, -1, -1};
static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -1237,7 +1301,7 @@
static constexpr dart::compiler::target::word SingleTargetCache_InstanceSize =
32;
static constexpr dart::compiler::target::word StackTrace_InstanceSize = 40;
-static constexpr dart::compiler::target::word SuspendState_HeaderSize = 48;
+static constexpr dart::compiler::target::word SuspendState_HeaderSize = 56;
static constexpr dart::compiler::target::word String_InstanceSize = 16;
static constexpr dart::compiler::target::word SubtypeTestCache_InstanceSize =
16;
@@ -1263,10 +1327,14 @@
#endif // defined(TARGET_ARCH_X64) && !defined(DART_COMPRESSED_POINTERS)
#if defined(TARGET_ARCH_IA32) && !defined(DART_COMPRESSED_POINTERS)
+static constexpr dart::compiler::target::word Code_active_instructions_offset =
+ 56;
static constexpr dart::compiler::target::word Function_usage_counter_offset =
72;
static constexpr dart::compiler::target::word
ICData_receivers_static_type_offset = 16;
+static constexpr dart::compiler::target::word
+ SuspendState_frame_capacity_offset = 4;
static constexpr dart::compiler::target::word Array_elements_start_offset = 12;
static constexpr dart::compiler::target::word Array_element_size = 4;
static constexpr dart::compiler::target::word ClassTable_elements_start_offset =
@@ -1377,9 +1445,8 @@
Closure_instantiator_type_arguments_offset = 4;
static constexpr dart::compiler::target::word
ClosureData_default_type_arguments_kind_offset = 16;
+static constexpr dart::compiler::target::word Code_instructions_offset = 24;
static constexpr dart::compiler::target::word Code_object_pool_offset = 20;
-static constexpr dart::compiler::target::word Code_saved_instructions_offset =
- 24;
static constexpr dart::compiler::target::word Code_owner_offset = 28;
static constexpr dart::compiler::target::word Context_num_variables_offset = 4;
static constexpr dart::compiler::target::word Context_parent_offset = 8;
@@ -1427,6 +1494,8 @@
static constexpr dart::compiler::target::word Isolate_current_tag_offset = 24;
static constexpr dart::compiler::target::word Isolate_default_tag_offset = 28;
static constexpr dart::compiler::target::word Isolate_finalizers_offset = 40;
+static constexpr dart::compiler::target::word
+ Isolate_has_resumption_breakpoints_offset = 45;
static constexpr dart::compiler::target::word Isolate_ic_miss_code_offset = 32;
static constexpr dart::compiler::target::word IsolateGroup_object_store_offset =
20;
@@ -1469,6 +1538,22 @@
188;
static constexpr dart::compiler::target::word ObjectStore_type_type_offset =
112;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_await_offset = 504;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_handle_exception_offset = 528;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_offset = 500;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_star_offset = 516;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_offset = 508;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_not_future_offset = 512;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_star_offset = 524;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_yield_async_star_offset = 520;
static constexpr dart::compiler::target::word OneByteString_data_offset = 12;
static constexpr dart::compiler::target::word PointerBase_data_offset = 4;
static constexpr dart::compiler::target::word Pointer_type_arguments_offset = 8;
@@ -1487,124 +1572,128 @@
static constexpr dart::compiler::target::word String_hash_offset = 8;
static constexpr dart::compiler::target::word String_length_offset = 4;
static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 4;
+static constexpr dart::compiler::target::word SuspendState_FrameSizeGrowthGap =
+ 2;
static constexpr dart::compiler::target::word
- SuspendState_error_callback_offset = 20;
+ SuspendState_error_callback_offset = 24;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
- 4;
+ 8;
static constexpr dart::compiler::target::word
- SuspendState_function_data_offset = 12;
-static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
-static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
+ SuspendState_function_data_offset = 16;
+static constexpr dart::compiler::target::word SuspendState_payload_offset = 28;
+static constexpr dart::compiler::target::word SuspendState_pc_offset = 12;
static constexpr dart::compiler::target::word
- SuspendState_then_callback_offset = 16;
+ SuspendState_then_callback_offset = 20;
static constexpr dart::compiler::target::word
- Thread_AllocateArray_entry_point_offset = 380;
+ Thread_AllocateArray_entry_point_offset = 400;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 760;
+ 784;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 764;
+ 788;
static constexpr dart::compiler::target::word
- Thread_array_write_barrier_entry_point_offset = 272;
+ Thread_array_write_barrier_entry_point_offset = 292;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_with_fpu_regs_entry_point_offset = 280;
+ Thread_allocate_mint_with_fpu_regs_entry_point_offset = 300;
static constexpr dart::compiler::target::word
Thread_allocate_mint_with_fpu_regs_stub_offset = 184;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_without_fpu_regs_entry_point_offset = 284;
+ Thread_allocate_mint_without_fpu_regs_entry_point_offset = 304;
static constexpr dart::compiler::target::word
Thread_allocate_mint_without_fpu_regs_stub_offset = 188;
static constexpr dart::compiler::target::word
- Thread_allocate_object_entry_point_offset = 288;
+ Thread_allocate_object_entry_point_offset = 308;
static constexpr dart::compiler::target::word
Thread_allocate_object_stub_offset = 192;
static constexpr dart::compiler::target::word
- Thread_allocate_object_parameterized_entry_point_offset = 292;
+ Thread_allocate_object_parameterized_entry_point_offset = 312;
static constexpr dart::compiler::target::word
Thread_allocate_object_parameterized_stub_offset = 196;
static constexpr dart::compiler::target::word
- Thread_allocate_object_slow_entry_point_offset = 296;
+ Thread_allocate_object_slow_entry_point_offset = 316;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 800;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 824;
static constexpr dart::compiler::target::word
- Thread_auto_scope_native_wrapper_entry_point_offset = 344;
+ Thread_async_exception_handler_stub_offset = 204;
+static constexpr dart::compiler::target::word
+ Thread_auto_scope_native_wrapper_entry_point_offset = 364;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
static constexpr dart::compiler::target::word Thread_bool_true_offset = 116;
static constexpr dart::compiler::target::word
- Thread_bootstrap_native_wrapper_entry_point_offset = 336;
+ Thread_bootstrap_native_wrapper_entry_point_offset = 356;
static constexpr dart::compiler::target::word
- Thread_call_to_runtime_entry_point_offset = 276;
+ Thread_call_to_runtime_entry_point_offset = 296;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 824;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 848;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 44;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 804;
+ Thread_double_truncate_round_supported_offset = 828;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 828;
+ Thread_service_extension_stream_offset = 852;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
- 316;
-static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
+ 336;
+static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset =
- 320;
+ 340;
static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
- 232;
+ 252;
static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
- 360;
+ 380;
static constexpr dart::compiler::target::word
- Thread_double_negate_address_offset = 356;
+ Thread_double_negate_address_offset = 376;
static constexpr dart::compiler::target::word Thread_end_offset = 52;
static constexpr dart::compiler::target::word
- Thread_enter_safepoint_stub_offset = 252;
+ Thread_enter_safepoint_stub_offset = 272;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 780;
+ 804;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_stub_offset = 256;
+ Thread_exit_safepoint_stub_offset = 276;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 260;
+ Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 280;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_stub_offset = 264;
+ Thread_call_native_through_safepoint_stub_offset = 284;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_entry_point_offset = 324;
+ Thread_call_native_through_safepoint_entry_point_offset = 344;
static constexpr dart::compiler::target::word
Thread_fix_allocation_stub_code_offset = 132;
static constexpr dart::compiler::target::word
Thread_fix_callers_target_code_offset = 128;
static constexpr dart::compiler::target::word
- Thread_float_absolute_address_offset = 372;
+ Thread_float_absolute_address_offset = 392;
static constexpr dart::compiler::target::word
- Thread_float_negate_address_offset = 368;
+ Thread_float_negate_address_offset = 388;
static constexpr dart::compiler::target::word Thread_float_not_address_offset =
- 364;
+ 384;
static constexpr dart::compiler::target::word
- Thread_float_zerow_address_offset = 376;
+ Thread_float_zerow_address_offset = 396;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 768;
+ 792;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 136;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 796;
+ 820;
static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 832;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 856;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
64;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_return_stub_offset = 236;
+ Thread_lazy_deopt_from_return_stub_offset = 256;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_throw_stub_offset = 240;
+ Thread_lazy_deopt_from_throw_stub_offset = 260;
static constexpr dart::compiler::target::word
- Thread_lazy_specialize_type_test_stub_offset = 248;
+ Thread_lazy_specialize_type_test_stub_offset = 268;
static constexpr dart::compiler::target::word
Thread_marking_stack_block_offset = 80;
static constexpr dart::compiler::target::word
- Thread_megamorphic_call_checked_entry_offset = 308;
+ Thread_megamorphic_call_checked_entry_offset = 328;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_entry_offset = 312;
+ Thread_switchable_call_miss_entry_offset = 332;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_stub_offset = 212;
+ Thread_switchable_call_miss_stub_offset = 232;
static constexpr dart::compiler::target::word
- Thread_no_scope_native_wrapper_entry_point_offset = 340;
+ Thread_no_scope_native_wrapper_entry_point_offset = 360;
static constexpr dart::compiler::target::word
Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 148;
static constexpr dart::compiler::target::word
@@ -1625,49 +1714,56 @@
Thread_range_error_shared_with_fpu_regs_stub_offset = 180;
static constexpr dart::compiler::target::word
Thread_range_error_shared_without_fpu_regs_stub_offset = 176;
+static constexpr dart::compiler::target::word Thread_resume_stub_offset = 208;
+static constexpr dart::compiler::target::word
+ Thread_return_async_not_future_stub_offset = 216;
+static constexpr dart::compiler::target::word
+ Thread_return_async_star_stub_offset = 220;
+static constexpr dart::compiler::target::word Thread_return_async_stub_offset =
+ 212;
static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
static constexpr dart::compiler::target::word
- Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 772;
+ Thread_predefined_symbols_address_offset = 368;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 796;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 776;
+ Thread_saved_shadow_call_stack_offset = 800;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 784;
+ 808;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_stub_offset = 244;
+ Thread_slow_type_test_stub_offset = 264;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_entry_point_offset = 332;
+ Thread_slow_type_test_entry_point_offset = 352;
static constexpr dart::compiler::target::word Thread_stack_limit_offset = 28;
static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
56;
static constexpr dart::compiler::target::word
Thread_stack_overflow_flags_offset = 60;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 304;
+ Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 324;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 208;
+ Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 228;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 300;
+ Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 320;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 204;
+ Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 224;
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
76;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_entry_point_offset = 732;
+ Thread_suspend_state_await_entry_point_offset = 756;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_entry_point_offset = 728;
+ Thread_suspend_state_init_async_entry_point_offset = 752;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_entry_point_offset = 736;
+ Thread_suspend_state_return_async_entry_point_offset = 760;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_not_future_entry_point_offset = 740;
+ Thread_suspend_state_return_async_not_future_entry_point_offset = 764;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_star_entry_point_offset = 744;
+ Thread_suspend_state_init_async_star_entry_point_offset = 768;
static constexpr dart::compiler::target::word
- Thread_suspend_state_yield_async_star_entry_point_offset = 748;
+ Thread_suspend_state_yield_async_star_entry_point_offset = 772;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_star_entry_point_offset = 752;
+ Thread_suspend_state_return_async_star_entry_point_offset = 776;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 756;
+ Thread_suspend_state_handle_exception_entry_point_offset = 780;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 72;
static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -1678,17 +1774,17 @@
Thread_unboxed_double_runtime_arg_offset = 104;
static constexpr dart::compiler::target::word Thread_vm_tag_offset = 88;
static constexpr dart::compiler::target::word
- Thread_write_barrier_entry_point_offset = 268;
+ Thread_write_barrier_entry_point_offset = 288;
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
32;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 788;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 812;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 792;
-static constexpr dart::compiler::target::word Thread_random_offset = 808;
+ Thread_callback_stack_return_offset = 816;
+static constexpr dart::compiler::target::word Thread_random_offset = 832;
static constexpr dart::compiler::target::word
- Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 816;
+ Thread_jump_to_frame_entry_point_offset = 348;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 840;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -1852,7 +1948,7 @@
static constexpr dart::compiler::target::word SingleTargetCache_InstanceSize =
16;
static constexpr dart::compiler::target::word StackTrace_InstanceSize = 20;
-static constexpr dart::compiler::target::word SuspendState_HeaderSize = 24;
+static constexpr dart::compiler::target::word SuspendState_HeaderSize = 28;
static constexpr dart::compiler::target::word String_InstanceSize = 12;
static constexpr dart::compiler::target::word SubtypeTestCache_InstanceSize = 8;
static constexpr dart::compiler::target::word LoadingUnit_InstanceSize = 20;
@@ -1877,10 +1973,14 @@
#endif // defined(TARGET_ARCH_IA32) && !defined(DART_COMPRESSED_POINTERS)
#if defined(TARGET_ARCH_ARM64) && !defined(DART_COMPRESSED_POINTERS)
+static constexpr dart::compiler::target::word Code_active_instructions_offset =
+ 112;
static constexpr dart::compiler::target::word Function_usage_counter_offset =
112;
static constexpr dart::compiler::target::word
ICData_receivers_static_type_offset = 32;
+static constexpr dart::compiler::target::word
+ SuspendState_frame_capacity_offset = 8;
static constexpr dart::compiler::target::word Array_elements_start_offset = 24;
static constexpr dart::compiler::target::word Array_element_size = 8;
static constexpr dart::compiler::target::word ClassTable_elements_start_offset =
@@ -1994,9 +2094,8 @@
Closure_instantiator_type_arguments_offset = 8;
static constexpr dart::compiler::target::word
ClosureData_default_type_arguments_kind_offset = 32;
+static constexpr dart::compiler::target::word Code_instructions_offset = 48;
static constexpr dart::compiler::target::word Code_object_pool_offset = 40;
-static constexpr dart::compiler::target::word Code_saved_instructions_offset =
- 48;
static constexpr dart::compiler::target::word Code_owner_offset = 56;
static constexpr dart::compiler::target::word Context_num_variables_offset = 8;
static constexpr dart::compiler::target::word Context_parent_offset = 16;
@@ -2044,6 +2143,8 @@
static constexpr dart::compiler::target::word Isolate_current_tag_offset = 48;
static constexpr dart::compiler::target::word Isolate_default_tag_offset = 56;
static constexpr dart::compiler::target::word Isolate_finalizers_offset = 80;
+static constexpr dart::compiler::target::word
+ Isolate_has_resumption_breakpoints_offset = 89;
static constexpr dart::compiler::target::word Isolate_ic_miss_code_offset = 64;
static constexpr dart::compiler::target::word IsolateGroup_object_store_offset =
40;
@@ -2086,6 +2187,22 @@
376;
static constexpr dart::compiler::target::word ObjectStore_type_type_offset =
224;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_await_offset = 1008;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_handle_exception_offset = 1056;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_offset = 1000;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_star_offset = 1032;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_offset = 1016;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_not_future_offset = 1024;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_star_offset = 1048;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_yield_async_star_offset = 1040;
static constexpr dart::compiler::target::word OneByteString_data_offset = 16;
static constexpr dart::compiler::target::word PointerBase_data_offset = 8;
static constexpr dart::compiler::target::word Pointer_type_arguments_offset =
@@ -2105,126 +2222,130 @@
static constexpr dart::compiler::target::word String_hash_offset = 4;
static constexpr dart::compiler::target::word String_length_offset = 8;
static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8;
+static constexpr dart::compiler::target::word SuspendState_FrameSizeGrowthGap =
+ 2;
static constexpr dart::compiler::target::word
- SuspendState_error_callback_offset = 40;
+ SuspendState_error_callback_offset = 48;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
- 8;
+ 16;
static constexpr dart::compiler::target::word
- SuspendState_function_data_offset = 24;
-static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
-static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
+ SuspendState_function_data_offset = 32;
+static constexpr dart::compiler::target::word SuspendState_payload_offset = 56;
+static constexpr dart::compiler::target::word SuspendState_pc_offset = 24;
static constexpr dart::compiler::target::word
- SuspendState_then_callback_offset = 32;
+ SuspendState_then_callback_offset = 40;
static constexpr dart::compiler::target::word
- Thread_AllocateArray_entry_point_offset = 736;
+ Thread_AllocateArray_entry_point_offset = 776;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1648;
+ 1696;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 1656;
+ 1704;
static constexpr dart::compiler::target::word
- Thread_array_write_barrier_entry_point_offset = 520;
+ Thread_array_write_barrier_entry_point_offset = 560;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_with_fpu_regs_entry_point_offset = 536;
+ Thread_allocate_mint_with_fpu_regs_entry_point_offset = 576;
static constexpr dart::compiler::target::word
Thread_allocate_mint_with_fpu_regs_stub_offset = 344;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_without_fpu_regs_entry_point_offset = 544;
+ Thread_allocate_mint_without_fpu_regs_entry_point_offset = 584;
static constexpr dart::compiler::target::word
Thread_allocate_mint_without_fpu_regs_stub_offset = 352;
static constexpr dart::compiler::target::word
- Thread_allocate_object_entry_point_offset = 552;
+ Thread_allocate_object_entry_point_offset = 592;
static constexpr dart::compiler::target::word
Thread_allocate_object_stub_offset = 360;
static constexpr dart::compiler::target::word
- Thread_allocate_object_parameterized_entry_point_offset = 560;
+ Thread_allocate_object_parameterized_entry_point_offset = 600;
static constexpr dart::compiler::target::word
Thread_allocate_object_parameterized_stub_offset = 368;
static constexpr dart::compiler::target::word
- Thread_allocate_object_slow_entry_point_offset = 568;
+ Thread_allocate_object_slow_entry_point_offset = 608;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1728;
+ 1776;
static constexpr dart::compiler::target::word
- Thread_auto_scope_native_wrapper_entry_point_offset = 664;
+ Thread_async_exception_handler_stub_offset = 384;
+static constexpr dart::compiler::target::word
+ Thread_auto_scope_native_wrapper_entry_point_offset = 704;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
static constexpr dart::compiler::target::word Thread_bool_true_offset = 208;
static constexpr dart::compiler::target::word
- Thread_bootstrap_native_wrapper_entry_point_offset = 648;
+ Thread_bootstrap_native_wrapper_entry_point_offset = 688;
static constexpr dart::compiler::target::word
- Thread_call_to_runtime_entry_point_offset = 528;
+ Thread_call_to_runtime_entry_point_offset = 568;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1768;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1816;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 1736;
+ Thread_double_truncate_round_supported_offset = 1784;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 1776;
+ Thread_service_extension_stream_offset = 1824;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
- 608;
-static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
+ 648;
+static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 472;
static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset =
- 616;
+ 656;
static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
- 440;
+ 480;
static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
- 696;
+ 736;
static constexpr dart::compiler::target::word
- Thread_double_negate_address_offset = 688;
+ Thread_double_negate_address_offset = 728;
static constexpr dart::compiler::target::word Thread_end_offset = 104;
static constexpr dart::compiler::target::word
- Thread_enter_safepoint_stub_offset = 480;
+ Thread_enter_safepoint_stub_offset = 520;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1688;
+ 1736;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_stub_offset = 488;
+ Thread_exit_safepoint_stub_offset = 528;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 496;
+ Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 536;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_stub_offset = 504;
+ Thread_call_native_through_safepoint_stub_offset = 544;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_entry_point_offset = 624;
+ Thread_call_native_through_safepoint_entry_point_offset = 664;
static constexpr dart::compiler::target::word
Thread_fix_allocation_stub_code_offset = 240;
static constexpr dart::compiler::target::word
Thread_fix_callers_target_code_offset = 232;
static constexpr dart::compiler::target::word
- Thread_float_absolute_address_offset = 720;
+ Thread_float_absolute_address_offset = 760;
static constexpr dart::compiler::target::word
- Thread_float_negate_address_offset = 712;
+ Thread_float_negate_address_offset = 752;
static constexpr dart::compiler::target::word Thread_float_not_address_offset =
- 704;
+ 744;
static constexpr dart::compiler::target::word
- Thread_float_zerow_address_offset = 728;
+ Thread_float_zerow_address_offset = 768;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1664;
+ 1712;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1720;
+ 1768;
static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word Thread_isolate_group_offset =
- 1784;
+ 1832;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
128;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_return_stub_offset = 448;
+ Thread_lazy_deopt_from_return_stub_offset = 488;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_throw_stub_offset = 456;
+ Thread_lazy_deopt_from_throw_stub_offset = 496;
static constexpr dart::compiler::target::word
- Thread_lazy_specialize_type_test_stub_offset = 472;
+ Thread_lazy_specialize_type_test_stub_offset = 512;
static constexpr dart::compiler::target::word
Thread_marking_stack_block_offset = 160;
static constexpr dart::compiler::target::word
- Thread_megamorphic_call_checked_entry_offset = 592;
+ Thread_megamorphic_call_checked_entry_offset = 632;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_entry_offset = 600;
+ Thread_switchable_call_miss_entry_offset = 640;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_stub_offset = 400;
+ Thread_switchable_call_miss_stub_offset = 440;
static constexpr dart::compiler::target::word
- Thread_no_scope_native_wrapper_entry_point_offset = 656;
+ Thread_no_scope_native_wrapper_entry_point_offset = 696;
static constexpr dart::compiler::target::word
Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 272;
static constexpr dart::compiler::target::word
@@ -2245,49 +2366,56 @@
Thread_range_error_shared_with_fpu_regs_stub_offset = 336;
static constexpr dart::compiler::target::word
Thread_range_error_shared_without_fpu_regs_stub_offset = 328;
+static constexpr dart::compiler::target::word Thread_resume_stub_offset = 392;
+static constexpr dart::compiler::target::word
+ Thread_return_async_not_future_stub_offset = 408;
+static constexpr dart::compiler::target::word
+ Thread_return_async_star_stub_offset = 416;
+static constexpr dart::compiler::target::word Thread_return_async_stub_offset =
+ 400;
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
- Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1672;
+ Thread_predefined_symbols_address_offset = 712;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1720;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1680;
+ Thread_saved_shadow_call_stack_offset = 1728;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1696;
+ 1744;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_stub_offset = 464;
+ Thread_slow_type_test_stub_offset = 504;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_entry_point_offset = 640;
+ Thread_slow_type_test_entry_point_offset = 680;
static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56;
static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
112;
static constexpr dart::compiler::target::word
Thread_stack_overflow_flags_offset = 120;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 584;
+ Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 624;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 392;
+ Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 432;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 576;
+ Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 616;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 384;
+ Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 424;
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
152;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_entry_point_offset = 1592;
+ Thread_suspend_state_await_entry_point_offset = 1640;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_entry_point_offset = 1584;
+ Thread_suspend_state_init_async_entry_point_offset = 1632;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_entry_point_offset = 1600;
+ Thread_suspend_state_return_async_entry_point_offset = 1648;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
+ Thread_suspend_state_return_async_not_future_entry_point_offset = 1656;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+ Thread_suspend_state_init_async_star_entry_point_offset = 1664;
static constexpr dart::compiler::target::word
- Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+ Thread_suspend_state_yield_async_star_entry_point_offset = 1672;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+ Thread_suspend_state_return_async_star_entry_point_offset = 1680;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 1640;
+ Thread_suspend_state_handle_exception_entry_point_offset = 1688;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -2298,18 +2426,18 @@
Thread_unboxed_double_runtime_arg_offset = 192;
static constexpr dart::compiler::target::word Thread_vm_tag_offset = 176;
static constexpr dart::compiler::target::word
- Thread_write_barrier_entry_point_offset = 512;
+ Thread_write_barrier_entry_point_offset = 552;
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
64;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1704;
+ 1752;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 1712;
-static constexpr dart::compiler::target::word Thread_random_offset = 1744;
+ Thread_callback_stack_return_offset = 1760;
+static constexpr dart::compiler::target::word Thread_random_offset = 1792;
static constexpr dart::compiler::target::word
- Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1752;
+ Thread_jump_to_frame_entry_point_offset = 672;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1800;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -2404,9 +2532,9 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
Thread_write_barrier_wrappers_thread_offset[] = {
- 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496, 1504, 1512,
- 1520, 1528, 1536, 1544, -1, -1, -1, -1, 1552, 1560, -1,
- -1, 1568, 1576, 1584, -1, -1, -1, -1, -1, -1};
+ 1480, 1488, 1496, 1504, 1512, 1520, 1528, 1536, 1544, 1552, 1560,
+ 1568, 1576, 1584, 1592, -1, -1, -1, -1, 1600, 1608, -1,
+ -1, 1616, 1624, 1632, -1, -1, -1, -1, -1, -1};
static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -2480,7 +2608,7 @@
static constexpr dart::compiler::target::word SingleTargetCache_InstanceSize =
32;
static constexpr dart::compiler::target::word StackTrace_InstanceSize = 40;
-static constexpr dart::compiler::target::word SuspendState_HeaderSize = 48;
+static constexpr dart::compiler::target::word SuspendState_HeaderSize = 56;
static constexpr dart::compiler::target::word String_InstanceSize = 16;
static constexpr dart::compiler::target::word SubtypeTestCache_InstanceSize =
16;
@@ -2506,10 +2634,14 @@
#endif // defined(TARGET_ARCH_ARM64) && !defined(DART_COMPRESSED_POINTERS)
#if defined(TARGET_ARCH_X64) && defined(DART_COMPRESSED_POINTERS)
+static constexpr dart::compiler::target::word Code_active_instructions_offset =
+ 112;
static constexpr dart::compiler::target::word Function_usage_counter_offset =
80;
static constexpr dart::compiler::target::word
ICData_receivers_static_type_offset = 32;
+static constexpr dart::compiler::target::word
+ SuspendState_frame_capacity_offset = 8;
static constexpr dart::compiler::target::word Array_elements_start_offset = 16;
static constexpr dart::compiler::target::word Array_element_size = 4;
static constexpr dart::compiler::target::word ClassTable_elements_start_offset =
@@ -2620,9 +2752,8 @@
Closure_instantiator_type_arguments_offset = 8;
static constexpr dart::compiler::target::word
ClosureData_default_type_arguments_kind_offset = 20;
+static constexpr dart::compiler::target::word Code_instructions_offset = 48;
static constexpr dart::compiler::target::word Code_object_pool_offset = 40;
-static constexpr dart::compiler::target::word Code_saved_instructions_offset =
- 48;
static constexpr dart::compiler::target::word Code_owner_offset = 56;
static constexpr dart::compiler::target::word Context_num_variables_offset = 8;
static constexpr dart::compiler::target::word Context_parent_offset = 12;
@@ -2670,6 +2801,8 @@
static constexpr dart::compiler::target::word Isolate_current_tag_offset = 48;
static constexpr dart::compiler::target::word Isolate_default_tag_offset = 56;
static constexpr dart::compiler::target::word Isolate_finalizers_offset = 80;
+static constexpr dart::compiler::target::word
+ Isolate_has_resumption_breakpoints_offset = 89;
static constexpr dart::compiler::target::word Isolate_ic_miss_code_offset = 64;
static constexpr dart::compiler::target::word IsolateGroup_object_store_offset =
40;
@@ -2712,6 +2845,22 @@
376;
static constexpr dart::compiler::target::word ObjectStore_type_type_offset =
224;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_await_offset = 1008;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_handle_exception_offset = 1056;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_offset = 1000;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_star_offset = 1032;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_offset = 1016;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_not_future_offset = 1024;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_star_offset = 1048;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_yield_async_star_offset = 1040;
static constexpr dart::compiler::target::word OneByteString_data_offset = 16;
static constexpr dart::compiler::target::word PointerBase_data_offset = 8;
static constexpr dart::compiler::target::word Pointer_type_arguments_offset =
@@ -2731,126 +2880,130 @@
static constexpr dart::compiler::target::word String_hash_offset = 4;
static constexpr dart::compiler::target::word String_length_offset = 8;
static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8;
+static constexpr dart::compiler::target::word SuspendState_FrameSizeGrowthGap =
+ 2;
static constexpr dart::compiler::target::word
- SuspendState_error_callback_offset = 32;
+ SuspendState_error_callback_offset = 40;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
- 8;
+ 16;
static constexpr dart::compiler::target::word
- SuspendState_function_data_offset = 24;
-static constexpr dart::compiler::target::word SuspendState_payload_offset = 40;
-static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
+ SuspendState_function_data_offset = 32;
+static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
+static constexpr dart::compiler::target::word SuspendState_pc_offset = 24;
static constexpr dart::compiler::target::word
- SuspendState_then_callback_offset = 28;
+ SuspendState_then_callback_offset = 36;
static constexpr dart::compiler::target::word
- Thread_AllocateArray_entry_point_offset = 736;
+ Thread_AllocateArray_entry_point_offset = 776;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1584;
+ 1632;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 1592;
+ 1640;
static constexpr dart::compiler::target::word
- Thread_array_write_barrier_entry_point_offset = 520;
+ Thread_array_write_barrier_entry_point_offset = 560;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_with_fpu_regs_entry_point_offset = 536;
+ Thread_allocate_mint_with_fpu_regs_entry_point_offset = 576;
static constexpr dart::compiler::target::word
Thread_allocate_mint_with_fpu_regs_stub_offset = 344;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_without_fpu_regs_entry_point_offset = 544;
+ Thread_allocate_mint_without_fpu_regs_entry_point_offset = 584;
static constexpr dart::compiler::target::word
Thread_allocate_mint_without_fpu_regs_stub_offset = 352;
static constexpr dart::compiler::target::word
- Thread_allocate_object_entry_point_offset = 552;
+ Thread_allocate_object_entry_point_offset = 592;
static constexpr dart::compiler::target::word
Thread_allocate_object_stub_offset = 360;
static constexpr dart::compiler::target::word
- Thread_allocate_object_parameterized_entry_point_offset = 560;
+ Thread_allocate_object_parameterized_entry_point_offset = 600;
static constexpr dart::compiler::target::word
Thread_allocate_object_parameterized_stub_offset = 368;
static constexpr dart::compiler::target::word
- Thread_allocate_object_slow_entry_point_offset = 568;
+ Thread_allocate_object_slow_entry_point_offset = 608;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1664;
+ 1712;
static constexpr dart::compiler::target::word
- Thread_auto_scope_native_wrapper_entry_point_offset = 664;
+ Thread_async_exception_handler_stub_offset = 384;
+static constexpr dart::compiler::target::word
+ Thread_auto_scope_native_wrapper_entry_point_offset = 704;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
static constexpr dart::compiler::target::word Thread_bool_true_offset = 208;
static constexpr dart::compiler::target::word
- Thread_bootstrap_native_wrapper_entry_point_offset = 648;
+ Thread_bootstrap_native_wrapper_entry_point_offset = 688;
static constexpr dart::compiler::target::word
- Thread_call_to_runtime_entry_point_offset = 528;
+ Thread_call_to_runtime_entry_point_offset = 568;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1704;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1752;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 1672;
+ Thread_double_truncate_round_supported_offset = 1720;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 1712;
+ Thread_service_extension_stream_offset = 1760;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
- 608;
-static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
+ 648;
+static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 472;
static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset =
- 616;
+ 656;
static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
- 440;
+ 480;
static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
- 696;
+ 736;
static constexpr dart::compiler::target::word
- Thread_double_negate_address_offset = 688;
+ Thread_double_negate_address_offset = 728;
static constexpr dart::compiler::target::word Thread_end_offset = 104;
static constexpr dart::compiler::target::word
- Thread_enter_safepoint_stub_offset = 480;
+ Thread_enter_safepoint_stub_offset = 520;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1624;
+ 1672;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_stub_offset = 488;
+ Thread_exit_safepoint_stub_offset = 528;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 496;
+ Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 536;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_stub_offset = 504;
+ Thread_call_native_through_safepoint_stub_offset = 544;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_entry_point_offset = 624;
+ Thread_call_native_through_safepoint_entry_point_offset = 664;
static constexpr dart::compiler::target::word
Thread_fix_allocation_stub_code_offset = 240;
static constexpr dart::compiler::target::word
Thread_fix_callers_target_code_offset = 232;
static constexpr dart::compiler::target::word
- Thread_float_absolute_address_offset = 720;
+ Thread_float_absolute_address_offset = 760;
static constexpr dart::compiler::target::word
- Thread_float_negate_address_offset = 712;
+ Thread_float_negate_address_offset = 752;
static constexpr dart::compiler::target::word Thread_float_not_address_offset =
- 704;
+ 744;
static constexpr dart::compiler::target::word
- Thread_float_zerow_address_offset = 728;
+ Thread_float_zerow_address_offset = 768;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1600;
+ 1648;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1656;
+ 1704;
static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word Thread_isolate_group_offset =
- 1720;
+ 1768;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
128;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_return_stub_offset = 448;
+ Thread_lazy_deopt_from_return_stub_offset = 488;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_throw_stub_offset = 456;
+ Thread_lazy_deopt_from_throw_stub_offset = 496;
static constexpr dart::compiler::target::word
- Thread_lazy_specialize_type_test_stub_offset = 472;
+ Thread_lazy_specialize_type_test_stub_offset = 512;
static constexpr dart::compiler::target::word
Thread_marking_stack_block_offset = 160;
static constexpr dart::compiler::target::word
- Thread_megamorphic_call_checked_entry_offset = 592;
+ Thread_megamorphic_call_checked_entry_offset = 632;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_entry_offset = 600;
+ Thread_switchable_call_miss_entry_offset = 640;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_stub_offset = 400;
+ Thread_switchable_call_miss_stub_offset = 440;
static constexpr dart::compiler::target::word
- Thread_no_scope_native_wrapper_entry_point_offset = 656;
+ Thread_no_scope_native_wrapper_entry_point_offset = 696;
static constexpr dart::compiler::target::word
Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 272;
static constexpr dart::compiler::target::word
@@ -2871,49 +3024,56 @@
Thread_range_error_shared_with_fpu_regs_stub_offset = 336;
static constexpr dart::compiler::target::word
Thread_range_error_shared_without_fpu_regs_stub_offset = 328;
+static constexpr dart::compiler::target::word Thread_resume_stub_offset = 392;
+static constexpr dart::compiler::target::word
+ Thread_return_async_not_future_stub_offset = 408;
+static constexpr dart::compiler::target::word
+ Thread_return_async_star_stub_offset = 416;
+static constexpr dart::compiler::target::word Thread_return_async_stub_offset =
+ 400;
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
- Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1608;
+ Thread_predefined_symbols_address_offset = 712;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1656;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1616;
+ Thread_saved_shadow_call_stack_offset = 1664;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1632;
+ 1680;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_stub_offset = 464;
+ Thread_slow_type_test_stub_offset = 504;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_entry_point_offset = 640;
+ Thread_slow_type_test_entry_point_offset = 680;
static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56;
static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
112;
static constexpr dart::compiler::target::word
Thread_stack_overflow_flags_offset = 120;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 584;
+ Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 624;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 392;
+ Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 432;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 576;
+ Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 616;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 384;
+ Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 424;
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
152;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_entry_point_offset = 1528;
+ Thread_suspend_state_await_entry_point_offset = 1576;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_entry_point_offset = 1520;
+ Thread_suspend_state_init_async_entry_point_offset = 1568;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_entry_point_offset = 1536;
+ Thread_suspend_state_return_async_entry_point_offset = 1584;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
+ Thread_suspend_state_return_async_not_future_entry_point_offset = 1592;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+ Thread_suspend_state_init_async_star_entry_point_offset = 1600;
static constexpr dart::compiler::target::word
- Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+ Thread_suspend_state_yield_async_star_entry_point_offset = 1608;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+ Thread_suspend_state_return_async_star_entry_point_offset = 1616;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 1576;
+ Thread_suspend_state_handle_exception_entry_point_offset = 1624;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -2924,18 +3084,18 @@
Thread_unboxed_double_runtime_arg_offset = 192;
static constexpr dart::compiler::target::word Thread_vm_tag_offset = 176;
static constexpr dart::compiler::target::word
- Thread_write_barrier_entry_point_offset = 512;
+ Thread_write_barrier_entry_point_offset = 552;
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
64;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1640;
+ 1688;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 1648;
-static constexpr dart::compiler::target::word Thread_random_offset = 1680;
+ Thread_callback_stack_return_offset = 1696;
+static constexpr dart::compiler::target::word Thread_random_offset = 1728;
static constexpr dart::compiler::target::word
- Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1688;
+ Thread_jump_to_frame_entry_point_offset = 672;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1736;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -3030,8 +3190,8 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
Thread_write_barrier_wrappers_thread_offset[] = {
- 1432, 1440, 1448, 1456, -1, -1, 1464, 1472,
- 1480, 1488, 1496, -1, 1504, 1512, -1, -1};
+ 1480, 1488, 1496, 1504, -1, -1, 1512, 1520,
+ 1528, 1536, 1544, -1, 1552, 1560, -1, -1};
static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
static constexpr dart::compiler::target::word Array_header_size = 16;
@@ -3105,7 +3265,7 @@
static constexpr dart::compiler::target::word SingleTargetCache_InstanceSize =
32;
static constexpr dart::compiler::target::word StackTrace_InstanceSize = 24;
-static constexpr dart::compiler::target::word SuspendState_HeaderSize = 40;
+static constexpr dart::compiler::target::word SuspendState_HeaderSize = 48;
static constexpr dart::compiler::target::word String_InstanceSize = 16;
static constexpr dart::compiler::target::word SubtypeTestCache_InstanceSize =
16;
@@ -3131,10 +3291,14 @@
#endif // defined(TARGET_ARCH_X64) && defined(DART_COMPRESSED_POINTERS)
#if defined(TARGET_ARCH_ARM64) && defined(DART_COMPRESSED_POINTERS)
+static constexpr dart::compiler::target::word Code_active_instructions_offset =
+ 112;
static constexpr dart::compiler::target::word Function_usage_counter_offset =
80;
static constexpr dart::compiler::target::word
ICData_receivers_static_type_offset = 32;
+static constexpr dart::compiler::target::word
+ SuspendState_frame_capacity_offset = 8;
static constexpr dart::compiler::target::word Array_elements_start_offset = 16;
static constexpr dart::compiler::target::word Array_element_size = 4;
static constexpr dart::compiler::target::word ClassTable_elements_start_offset =
@@ -3245,9 +3409,8 @@
Closure_instantiator_type_arguments_offset = 8;
static constexpr dart::compiler::target::word
ClosureData_default_type_arguments_kind_offset = 20;
+static constexpr dart::compiler::target::word Code_instructions_offset = 48;
static constexpr dart::compiler::target::word Code_object_pool_offset = 40;
-static constexpr dart::compiler::target::word Code_saved_instructions_offset =
- 48;
static constexpr dart::compiler::target::word Code_owner_offset = 56;
static constexpr dart::compiler::target::word Context_num_variables_offset = 8;
static constexpr dart::compiler::target::word Context_parent_offset = 12;
@@ -3295,6 +3458,8 @@
static constexpr dart::compiler::target::word Isolate_current_tag_offset = 48;
static constexpr dart::compiler::target::word Isolate_default_tag_offset = 56;
static constexpr dart::compiler::target::word Isolate_finalizers_offset = 80;
+static constexpr dart::compiler::target::word
+ Isolate_has_resumption_breakpoints_offset = 89;
static constexpr dart::compiler::target::word Isolate_ic_miss_code_offset = 64;
static constexpr dart::compiler::target::word IsolateGroup_object_store_offset =
40;
@@ -3337,6 +3502,22 @@
376;
static constexpr dart::compiler::target::word ObjectStore_type_type_offset =
224;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_await_offset = 1008;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_handle_exception_offset = 1056;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_offset = 1000;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_star_offset = 1032;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_offset = 1016;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_not_future_offset = 1024;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_star_offset = 1048;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_yield_async_star_offset = 1040;
static constexpr dart::compiler::target::word OneByteString_data_offset = 16;
static constexpr dart::compiler::target::word PointerBase_data_offset = 8;
static constexpr dart::compiler::target::word Pointer_type_arguments_offset =
@@ -3356,126 +3537,130 @@
static constexpr dart::compiler::target::word String_hash_offset = 4;
static constexpr dart::compiler::target::word String_length_offset = 8;
static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8;
+static constexpr dart::compiler::target::word SuspendState_FrameSizeGrowthGap =
+ 2;
static constexpr dart::compiler::target::word
- SuspendState_error_callback_offset = 32;
+ SuspendState_error_callback_offset = 40;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
- 8;
+ 16;
static constexpr dart::compiler::target::word
- SuspendState_function_data_offset = 24;
-static constexpr dart::compiler::target::word SuspendState_payload_offset = 40;
-static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
+ SuspendState_function_data_offset = 32;
+static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
+static constexpr dart::compiler::target::word SuspendState_pc_offset = 24;
static constexpr dart::compiler::target::word
- SuspendState_then_callback_offset = 28;
+ SuspendState_then_callback_offset = 36;
static constexpr dart::compiler::target::word
- Thread_AllocateArray_entry_point_offset = 736;
+ Thread_AllocateArray_entry_point_offset = 776;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1648;
+ 1696;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 1656;
+ 1704;
static constexpr dart::compiler::target::word
- Thread_array_write_barrier_entry_point_offset = 520;
+ Thread_array_write_barrier_entry_point_offset = 560;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_with_fpu_regs_entry_point_offset = 536;
+ Thread_allocate_mint_with_fpu_regs_entry_point_offset = 576;
static constexpr dart::compiler::target::word
Thread_allocate_mint_with_fpu_regs_stub_offset = 344;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_without_fpu_regs_entry_point_offset = 544;
+ Thread_allocate_mint_without_fpu_regs_entry_point_offset = 584;
static constexpr dart::compiler::target::word
Thread_allocate_mint_without_fpu_regs_stub_offset = 352;
static constexpr dart::compiler::target::word
- Thread_allocate_object_entry_point_offset = 552;
+ Thread_allocate_object_entry_point_offset = 592;
static constexpr dart::compiler::target::word
Thread_allocate_object_stub_offset = 360;
static constexpr dart::compiler::target::word
- Thread_allocate_object_parameterized_entry_point_offset = 560;
+ Thread_allocate_object_parameterized_entry_point_offset = 600;
static constexpr dart::compiler::target::word
Thread_allocate_object_parameterized_stub_offset = 368;
static constexpr dart::compiler::target::word
- Thread_allocate_object_slow_entry_point_offset = 568;
+ Thread_allocate_object_slow_entry_point_offset = 608;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1728;
+ 1776;
static constexpr dart::compiler::target::word
- Thread_auto_scope_native_wrapper_entry_point_offset = 664;
+ Thread_async_exception_handler_stub_offset = 384;
+static constexpr dart::compiler::target::word
+ Thread_auto_scope_native_wrapper_entry_point_offset = 704;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
static constexpr dart::compiler::target::word Thread_bool_true_offset = 208;
static constexpr dart::compiler::target::word
- Thread_bootstrap_native_wrapper_entry_point_offset = 648;
+ Thread_bootstrap_native_wrapper_entry_point_offset = 688;
static constexpr dart::compiler::target::word
- Thread_call_to_runtime_entry_point_offset = 528;
+ Thread_call_to_runtime_entry_point_offset = 568;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1768;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1816;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 1736;
+ Thread_double_truncate_round_supported_offset = 1784;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 1776;
+ Thread_service_extension_stream_offset = 1824;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
- 608;
-static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
+ 648;
+static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 472;
static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset =
- 616;
+ 656;
static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
- 440;
+ 480;
static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
- 696;
+ 736;
static constexpr dart::compiler::target::word
- Thread_double_negate_address_offset = 688;
+ Thread_double_negate_address_offset = 728;
static constexpr dart::compiler::target::word Thread_end_offset = 104;
static constexpr dart::compiler::target::word
- Thread_enter_safepoint_stub_offset = 480;
+ Thread_enter_safepoint_stub_offset = 520;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1688;
+ 1736;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_stub_offset = 488;
+ Thread_exit_safepoint_stub_offset = 528;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 496;
+ Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 536;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_stub_offset = 504;
+ Thread_call_native_through_safepoint_stub_offset = 544;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_entry_point_offset = 624;
+ Thread_call_native_through_safepoint_entry_point_offset = 664;
static constexpr dart::compiler::target::word
Thread_fix_allocation_stub_code_offset = 240;
static constexpr dart::compiler::target::word
Thread_fix_callers_target_code_offset = 232;
static constexpr dart::compiler::target::word
- Thread_float_absolute_address_offset = 720;
+ Thread_float_absolute_address_offset = 760;
static constexpr dart::compiler::target::word
- Thread_float_negate_address_offset = 712;
+ Thread_float_negate_address_offset = 752;
static constexpr dart::compiler::target::word Thread_float_not_address_offset =
- 704;
+ 744;
static constexpr dart::compiler::target::word
- Thread_float_zerow_address_offset = 728;
+ Thread_float_zerow_address_offset = 768;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1664;
+ 1712;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1720;
+ 1768;
static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word Thread_isolate_group_offset =
- 1784;
+ 1832;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
128;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_return_stub_offset = 448;
+ Thread_lazy_deopt_from_return_stub_offset = 488;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_throw_stub_offset = 456;
+ Thread_lazy_deopt_from_throw_stub_offset = 496;
static constexpr dart::compiler::target::word
- Thread_lazy_specialize_type_test_stub_offset = 472;
+ Thread_lazy_specialize_type_test_stub_offset = 512;
static constexpr dart::compiler::target::word
Thread_marking_stack_block_offset = 160;
static constexpr dart::compiler::target::word
- Thread_megamorphic_call_checked_entry_offset = 592;
+ Thread_megamorphic_call_checked_entry_offset = 632;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_entry_offset = 600;
+ Thread_switchable_call_miss_entry_offset = 640;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_stub_offset = 400;
+ Thread_switchable_call_miss_stub_offset = 440;
static constexpr dart::compiler::target::word
- Thread_no_scope_native_wrapper_entry_point_offset = 656;
+ Thread_no_scope_native_wrapper_entry_point_offset = 696;
static constexpr dart::compiler::target::word
Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 272;
static constexpr dart::compiler::target::word
@@ -3496,49 +3681,56 @@
Thread_range_error_shared_with_fpu_regs_stub_offset = 336;
static constexpr dart::compiler::target::word
Thread_range_error_shared_without_fpu_regs_stub_offset = 328;
+static constexpr dart::compiler::target::word Thread_resume_stub_offset = 392;
+static constexpr dart::compiler::target::word
+ Thread_return_async_not_future_stub_offset = 408;
+static constexpr dart::compiler::target::word
+ Thread_return_async_star_stub_offset = 416;
+static constexpr dart::compiler::target::word Thread_return_async_stub_offset =
+ 400;
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
- Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1672;
+ Thread_predefined_symbols_address_offset = 712;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1720;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1680;
+ Thread_saved_shadow_call_stack_offset = 1728;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1696;
+ 1744;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_stub_offset = 464;
+ Thread_slow_type_test_stub_offset = 504;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_entry_point_offset = 640;
+ Thread_slow_type_test_entry_point_offset = 680;
static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56;
static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
112;
static constexpr dart::compiler::target::word
Thread_stack_overflow_flags_offset = 120;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 584;
+ Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 624;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 392;
+ Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 432;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 576;
+ Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 616;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 384;
+ Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 424;
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
152;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_entry_point_offset = 1592;
+ Thread_suspend_state_await_entry_point_offset = 1640;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_entry_point_offset = 1584;
+ Thread_suspend_state_init_async_entry_point_offset = 1632;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_entry_point_offset = 1600;
+ Thread_suspend_state_return_async_entry_point_offset = 1648;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
+ Thread_suspend_state_return_async_not_future_entry_point_offset = 1656;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+ Thread_suspend_state_init_async_star_entry_point_offset = 1664;
static constexpr dart::compiler::target::word
- Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+ Thread_suspend_state_yield_async_star_entry_point_offset = 1672;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+ Thread_suspend_state_return_async_star_entry_point_offset = 1680;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 1640;
+ Thread_suspend_state_handle_exception_entry_point_offset = 1688;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -3549,18 +3741,18 @@
Thread_unboxed_double_runtime_arg_offset = 192;
static constexpr dart::compiler::target::word Thread_vm_tag_offset = 176;
static constexpr dart::compiler::target::word
- Thread_write_barrier_entry_point_offset = 512;
+ Thread_write_barrier_entry_point_offset = 552;
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
64;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1704;
+ 1752;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 1712;
-static constexpr dart::compiler::target::word Thread_random_offset = 1744;
+ Thread_callback_stack_return_offset = 1760;
+static constexpr dart::compiler::target::word Thread_random_offset = 1792;
static constexpr dart::compiler::target::word
- Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1752;
+ Thread_jump_to_frame_entry_point_offset = 672;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1800;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -3655,9 +3847,9 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
Thread_write_barrier_wrappers_thread_offset[] = {
- 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496, 1504, 1512,
- 1520, 1528, 1536, 1544, -1, -1, -1, -1, 1552, 1560, -1,
- -1, 1568, 1576, 1584, -1, -1, -1, -1, -1, -1};
+ 1480, 1488, 1496, 1504, 1512, 1520, 1528, 1536, 1544, 1552, 1560,
+ 1568, 1576, 1584, 1592, -1, -1, -1, -1, 1600, 1608, -1,
+ -1, 1616, 1624, 1632, -1, -1, -1, -1, -1, -1};
static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
static constexpr dart::compiler::target::word Array_header_size = 16;
@@ -3731,7 +3923,7 @@
static constexpr dart::compiler::target::word SingleTargetCache_InstanceSize =
32;
static constexpr dart::compiler::target::word StackTrace_InstanceSize = 24;
-static constexpr dart::compiler::target::word SuspendState_HeaderSize = 40;
+static constexpr dart::compiler::target::word SuspendState_HeaderSize = 48;
static constexpr dart::compiler::target::word String_InstanceSize = 16;
static constexpr dart::compiler::target::word SubtypeTestCache_InstanceSize =
16;
@@ -3757,10 +3949,14 @@
#endif // defined(TARGET_ARCH_ARM64) && defined(DART_COMPRESSED_POINTERS)
#if defined(TARGET_ARCH_RISCV32) && !defined(DART_COMPRESSED_POINTERS)
+static constexpr dart::compiler::target::word Code_active_instructions_offset =
+ 56;
static constexpr dart::compiler::target::word Function_usage_counter_offset =
72;
static constexpr dart::compiler::target::word
ICData_receivers_static_type_offset = 16;
+static constexpr dart::compiler::target::word
+ SuspendState_frame_capacity_offset = 4;
static constexpr dart::compiler::target::word Array_elements_start_offset = 12;
static constexpr dart::compiler::target::word Array_element_size = 4;
static constexpr dart::compiler::target::word ClassTable_elements_start_offset =
@@ -3871,9 +4067,8 @@
Closure_instantiator_type_arguments_offset = 4;
static constexpr dart::compiler::target::word
ClosureData_default_type_arguments_kind_offset = 16;
+static constexpr dart::compiler::target::word Code_instructions_offset = 24;
static constexpr dart::compiler::target::word Code_object_pool_offset = 20;
-static constexpr dart::compiler::target::word Code_saved_instructions_offset =
- 24;
static constexpr dart::compiler::target::word Code_owner_offset = 28;
static constexpr dart::compiler::target::word Context_num_variables_offset = 4;
static constexpr dart::compiler::target::word Context_parent_offset = 8;
@@ -3921,6 +4116,8 @@
static constexpr dart::compiler::target::word Isolate_current_tag_offset = 24;
static constexpr dart::compiler::target::word Isolate_default_tag_offset = 28;
static constexpr dart::compiler::target::word Isolate_finalizers_offset = 40;
+static constexpr dart::compiler::target::word
+ Isolate_has_resumption_breakpoints_offset = 45;
static constexpr dart::compiler::target::word Isolate_ic_miss_code_offset = 32;
static constexpr dart::compiler::target::word IsolateGroup_object_store_offset =
20;
@@ -3963,6 +4160,22 @@
188;
static constexpr dart::compiler::target::word ObjectStore_type_type_offset =
112;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_await_offset = 504;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_handle_exception_offset = 528;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_offset = 500;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_star_offset = 516;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_offset = 508;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_not_future_offset = 512;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_star_offset = 524;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_yield_async_star_offset = 520;
static constexpr dart::compiler::target::word OneByteString_data_offset = 12;
static constexpr dart::compiler::target::word PointerBase_data_offset = 4;
static constexpr dart::compiler::target::word Pointer_type_arguments_offset = 8;
@@ -3981,124 +4194,128 @@
static constexpr dart::compiler::target::word String_hash_offset = 8;
static constexpr dart::compiler::target::word String_length_offset = 4;
static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 4;
+static constexpr dart::compiler::target::word SuspendState_FrameSizeGrowthGap =
+ 2;
static constexpr dart::compiler::target::word
- SuspendState_error_callback_offset = 20;
+ SuspendState_error_callback_offset = 24;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
- 4;
+ 8;
static constexpr dart::compiler::target::word
- SuspendState_function_data_offset = 12;
-static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
-static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
+ SuspendState_function_data_offset = 16;
+static constexpr dart::compiler::target::word SuspendState_payload_offset = 28;
+static constexpr dart::compiler::target::word SuspendState_pc_offset = 12;
static constexpr dart::compiler::target::word
- SuspendState_then_callback_offset = 16;
+ SuspendState_then_callback_offset = 20;
static constexpr dart::compiler::target::word
- Thread_AllocateArray_entry_point_offset = 380;
+ Thread_AllocateArray_entry_point_offset = 400;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 832;
+ 856;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 836;
+ 860;
static constexpr dart::compiler::target::word
- Thread_array_write_barrier_entry_point_offset = 272;
+ Thread_array_write_barrier_entry_point_offset = 292;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_with_fpu_regs_entry_point_offset = 280;
+ Thread_allocate_mint_with_fpu_regs_entry_point_offset = 300;
static constexpr dart::compiler::target::word
Thread_allocate_mint_with_fpu_regs_stub_offset = 184;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_without_fpu_regs_entry_point_offset = 284;
+ Thread_allocate_mint_without_fpu_regs_entry_point_offset = 304;
static constexpr dart::compiler::target::word
Thread_allocate_mint_without_fpu_regs_stub_offset = 188;
static constexpr dart::compiler::target::word
- Thread_allocate_object_entry_point_offset = 288;
+ Thread_allocate_object_entry_point_offset = 308;
static constexpr dart::compiler::target::word
Thread_allocate_object_stub_offset = 192;
static constexpr dart::compiler::target::word
- Thread_allocate_object_parameterized_entry_point_offset = 292;
+ Thread_allocate_object_parameterized_entry_point_offset = 312;
static constexpr dart::compiler::target::word
Thread_allocate_object_parameterized_stub_offset = 196;
static constexpr dart::compiler::target::word
- Thread_allocate_object_slow_entry_point_offset = 296;
+ Thread_allocate_object_slow_entry_point_offset = 316;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 872;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 896;
static constexpr dart::compiler::target::word
- Thread_auto_scope_native_wrapper_entry_point_offset = 344;
+ Thread_async_exception_handler_stub_offset = 204;
+static constexpr dart::compiler::target::word
+ Thread_auto_scope_native_wrapper_entry_point_offset = 364;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
static constexpr dart::compiler::target::word Thread_bool_true_offset = 116;
static constexpr dart::compiler::target::word
- Thread_bootstrap_native_wrapper_entry_point_offset = 336;
+ Thread_bootstrap_native_wrapper_entry_point_offset = 356;
static constexpr dart::compiler::target::word
- Thread_call_to_runtime_entry_point_offset = 276;
+ Thread_call_to_runtime_entry_point_offset = 296;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 896;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 920;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 44;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 876;
+ Thread_double_truncate_round_supported_offset = 900;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 900;
+ Thread_service_extension_stream_offset = 924;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
- 316;
-static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
+ 336;
+static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset =
- 320;
+ 340;
static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
- 232;
+ 252;
static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
- 360;
+ 380;
static constexpr dart::compiler::target::word
- Thread_double_negate_address_offset = 356;
+ Thread_double_negate_address_offset = 376;
static constexpr dart::compiler::target::word Thread_end_offset = 52;
static constexpr dart::compiler::target::word
- Thread_enter_safepoint_stub_offset = 252;
+ Thread_enter_safepoint_stub_offset = 272;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 852;
+ 876;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_stub_offset = 256;
+ Thread_exit_safepoint_stub_offset = 276;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 260;
+ Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 280;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_stub_offset = 264;
+ Thread_call_native_through_safepoint_stub_offset = 284;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_entry_point_offset = 324;
+ Thread_call_native_through_safepoint_entry_point_offset = 344;
static constexpr dart::compiler::target::word
Thread_fix_allocation_stub_code_offset = 132;
static constexpr dart::compiler::target::word
Thread_fix_callers_target_code_offset = 128;
static constexpr dart::compiler::target::word
- Thread_float_absolute_address_offset = 372;
+ Thread_float_absolute_address_offset = 392;
static constexpr dart::compiler::target::word
- Thread_float_negate_address_offset = 368;
+ Thread_float_negate_address_offset = 388;
static constexpr dart::compiler::target::word Thread_float_not_address_offset =
- 364;
+ 384;
static constexpr dart::compiler::target::word
- Thread_float_zerow_address_offset = 376;
+ Thread_float_zerow_address_offset = 396;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 840;
+ 864;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 136;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 868;
+ 892;
static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 904;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 928;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
64;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_return_stub_offset = 236;
+ Thread_lazy_deopt_from_return_stub_offset = 256;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_throw_stub_offset = 240;
+ Thread_lazy_deopt_from_throw_stub_offset = 260;
static constexpr dart::compiler::target::word
- Thread_lazy_specialize_type_test_stub_offset = 248;
+ Thread_lazy_specialize_type_test_stub_offset = 268;
static constexpr dart::compiler::target::word
Thread_marking_stack_block_offset = 80;
static constexpr dart::compiler::target::word
- Thread_megamorphic_call_checked_entry_offset = 308;
+ Thread_megamorphic_call_checked_entry_offset = 328;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_entry_offset = 312;
+ Thread_switchable_call_miss_entry_offset = 332;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_stub_offset = 212;
+ Thread_switchable_call_miss_stub_offset = 232;
static constexpr dart::compiler::target::word
- Thread_no_scope_native_wrapper_entry_point_offset = 340;
+ Thread_no_scope_native_wrapper_entry_point_offset = 360;
static constexpr dart::compiler::target::word
Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 148;
static constexpr dart::compiler::target::word
@@ -4119,49 +4336,56 @@
Thread_range_error_shared_with_fpu_regs_stub_offset = 180;
static constexpr dart::compiler::target::word
Thread_range_error_shared_without_fpu_regs_stub_offset = 176;
+static constexpr dart::compiler::target::word Thread_resume_stub_offset = 208;
+static constexpr dart::compiler::target::word
+ Thread_return_async_not_future_stub_offset = 216;
+static constexpr dart::compiler::target::word
+ Thread_return_async_star_stub_offset = 220;
+static constexpr dart::compiler::target::word Thread_return_async_stub_offset =
+ 212;
static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
static constexpr dart::compiler::target::word
- Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 844;
+ Thread_predefined_symbols_address_offset = 368;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 868;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 848;
+ Thread_saved_shadow_call_stack_offset = 872;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 856;
+ 880;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_stub_offset = 244;
+ Thread_slow_type_test_stub_offset = 264;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_entry_point_offset = 332;
+ Thread_slow_type_test_entry_point_offset = 352;
static constexpr dart::compiler::target::word Thread_stack_limit_offset = 28;
static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
56;
static constexpr dart::compiler::target::word
Thread_stack_overflow_flags_offset = 60;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 304;
+ Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 324;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 208;
+ Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 228;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 300;
+ Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 320;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 204;
+ Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 224;
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
76;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_entry_point_offset = 804;
+ Thread_suspend_state_await_entry_point_offset = 828;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_entry_point_offset = 800;
+ Thread_suspend_state_init_async_entry_point_offset = 824;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_entry_point_offset = 808;
+ Thread_suspend_state_return_async_entry_point_offset = 832;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_not_future_entry_point_offset = 812;
+ Thread_suspend_state_return_async_not_future_entry_point_offset = 836;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_star_entry_point_offset = 816;
+ Thread_suspend_state_init_async_star_entry_point_offset = 840;
static constexpr dart::compiler::target::word
- Thread_suspend_state_yield_async_star_entry_point_offset = 820;
+ Thread_suspend_state_yield_async_star_entry_point_offset = 844;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_star_entry_point_offset = 824;
+ Thread_suspend_state_return_async_star_entry_point_offset = 848;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 828;
+ Thread_suspend_state_handle_exception_entry_point_offset = 852;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 72;
static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -4172,17 +4396,17 @@
Thread_unboxed_double_runtime_arg_offset = 104;
static constexpr dart::compiler::target::word Thread_vm_tag_offset = 88;
static constexpr dart::compiler::target::word
- Thread_write_barrier_entry_point_offset = 268;
+ Thread_write_barrier_entry_point_offset = 288;
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
32;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 860;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 884;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 864;
-static constexpr dart::compiler::target::word Thread_random_offset = 880;
+ Thread_callback_stack_return_offset = 888;
+static constexpr dart::compiler::target::word Thread_random_offset = 904;
static constexpr dart::compiler::target::word
- Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 888;
+ Thread_jump_to_frame_entry_point_offset = 348;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 912;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -4275,9 +4499,9 @@
4, 12, 8, 16};
static constexpr dart::compiler::target::word
Thread_write_barrier_wrappers_thread_offset[] = {
- -1, -1, -1, -1, -1, 728, 732, 736, -1, -1, 740,
- 744, 748, -1, -1, -1, 752, 756, 760, 764, 768, 772,
- 776, 780, -1, -1, -1, -1, 784, 788, 792, 796};
+ -1, -1, -1, -1, -1, 752, 756, 760, -1, -1, 764,
+ 768, 772, -1, -1, -1, 776, 780, 784, 788, 792, 796,
+ 800, 804, -1, -1, -1, -1, 808, 812, 816, 820};
static constexpr dart::compiler::target::word AbstractType_InstanceSize = 12;
static constexpr dart::compiler::target::word ApiError_InstanceSize = 8;
static constexpr dart::compiler::target::word Array_header_size = 12;
@@ -4351,7 +4575,7 @@
static constexpr dart::compiler::target::word SingleTargetCache_InstanceSize =
16;
static constexpr dart::compiler::target::word StackTrace_InstanceSize = 20;
-static constexpr dart::compiler::target::word SuspendState_HeaderSize = 24;
+static constexpr dart::compiler::target::word SuspendState_HeaderSize = 28;
static constexpr dart::compiler::target::word String_InstanceSize = 12;
static constexpr dart::compiler::target::word SubtypeTestCache_InstanceSize = 8;
static constexpr dart::compiler::target::word LoadingUnit_InstanceSize = 20;
@@ -4376,10 +4600,14 @@
#endif // defined(TARGET_ARCH_RISCV32) && !defined(DART_COMPRESSED_POINTERS)
#if defined(TARGET_ARCH_RISCV64) && !defined(DART_COMPRESSED_POINTERS)
+static constexpr dart::compiler::target::word Code_active_instructions_offset =
+ 112;
static constexpr dart::compiler::target::word Function_usage_counter_offset =
112;
static constexpr dart::compiler::target::word
ICData_receivers_static_type_offset = 32;
+static constexpr dart::compiler::target::word
+ SuspendState_frame_capacity_offset = 8;
static constexpr dart::compiler::target::word Array_elements_start_offset = 24;
static constexpr dart::compiler::target::word Array_element_size = 8;
static constexpr dart::compiler::target::word ClassTable_elements_start_offset =
@@ -4493,9 +4721,8 @@
Closure_instantiator_type_arguments_offset = 8;
static constexpr dart::compiler::target::word
ClosureData_default_type_arguments_kind_offset = 32;
+static constexpr dart::compiler::target::word Code_instructions_offset = 48;
static constexpr dart::compiler::target::word Code_object_pool_offset = 40;
-static constexpr dart::compiler::target::word Code_saved_instructions_offset =
- 48;
static constexpr dart::compiler::target::word Code_owner_offset = 56;
static constexpr dart::compiler::target::word Context_num_variables_offset = 8;
static constexpr dart::compiler::target::word Context_parent_offset = 16;
@@ -4543,6 +4770,8 @@
static constexpr dart::compiler::target::word Isolate_current_tag_offset = 48;
static constexpr dart::compiler::target::word Isolate_default_tag_offset = 56;
static constexpr dart::compiler::target::word Isolate_finalizers_offset = 80;
+static constexpr dart::compiler::target::word
+ Isolate_has_resumption_breakpoints_offset = 89;
static constexpr dart::compiler::target::word Isolate_ic_miss_code_offset = 64;
static constexpr dart::compiler::target::word IsolateGroup_object_store_offset =
40;
@@ -4585,6 +4814,22 @@
376;
static constexpr dart::compiler::target::word ObjectStore_type_type_offset =
224;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_await_offset = 1008;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_handle_exception_offset = 1056;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_offset = 1000;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_star_offset = 1032;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_offset = 1016;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_not_future_offset = 1024;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_star_offset = 1048;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_yield_async_star_offset = 1040;
static constexpr dart::compiler::target::word OneByteString_data_offset = 16;
static constexpr dart::compiler::target::word PointerBase_data_offset = 8;
static constexpr dart::compiler::target::word Pointer_type_arguments_offset =
@@ -4604,126 +4849,130 @@
static constexpr dart::compiler::target::word String_hash_offset = 4;
static constexpr dart::compiler::target::word String_length_offset = 8;
static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8;
+static constexpr dart::compiler::target::word SuspendState_FrameSizeGrowthGap =
+ 2;
static constexpr dart::compiler::target::word
- SuspendState_error_callback_offset = 40;
+ SuspendState_error_callback_offset = 48;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
- 8;
+ 16;
static constexpr dart::compiler::target::word
- SuspendState_function_data_offset = 24;
-static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
-static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
+ SuspendState_function_data_offset = 32;
+static constexpr dart::compiler::target::word SuspendState_payload_offset = 56;
+static constexpr dart::compiler::target::word SuspendState_pc_offset = 24;
static constexpr dart::compiler::target::word
- SuspendState_then_callback_offset = 32;
+ SuspendState_then_callback_offset = 40;
static constexpr dart::compiler::target::word
- Thread_AllocateArray_entry_point_offset = 736;
+ Thread_AllocateArray_entry_point_offset = 776;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1640;
+ 1688;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 1648;
+ 1696;
static constexpr dart::compiler::target::word
- Thread_array_write_barrier_entry_point_offset = 520;
+ Thread_array_write_barrier_entry_point_offset = 560;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_with_fpu_regs_entry_point_offset = 536;
+ Thread_allocate_mint_with_fpu_regs_entry_point_offset = 576;
static constexpr dart::compiler::target::word
Thread_allocate_mint_with_fpu_regs_stub_offset = 344;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_without_fpu_regs_entry_point_offset = 544;
+ Thread_allocate_mint_without_fpu_regs_entry_point_offset = 584;
static constexpr dart::compiler::target::word
Thread_allocate_mint_without_fpu_regs_stub_offset = 352;
static constexpr dart::compiler::target::word
- Thread_allocate_object_entry_point_offset = 552;
+ Thread_allocate_object_entry_point_offset = 592;
static constexpr dart::compiler::target::word
Thread_allocate_object_stub_offset = 360;
static constexpr dart::compiler::target::word
- Thread_allocate_object_parameterized_entry_point_offset = 560;
+ Thread_allocate_object_parameterized_entry_point_offset = 600;
static constexpr dart::compiler::target::word
Thread_allocate_object_parameterized_stub_offset = 368;
static constexpr dart::compiler::target::word
- Thread_allocate_object_slow_entry_point_offset = 568;
+ Thread_allocate_object_slow_entry_point_offset = 608;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1720;
+ 1768;
static constexpr dart::compiler::target::word
- Thread_auto_scope_native_wrapper_entry_point_offset = 664;
+ Thread_async_exception_handler_stub_offset = 384;
+static constexpr dart::compiler::target::word
+ Thread_auto_scope_native_wrapper_entry_point_offset = 704;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
static constexpr dart::compiler::target::word Thread_bool_true_offset = 208;
static constexpr dart::compiler::target::word
- Thread_bootstrap_native_wrapper_entry_point_offset = 648;
+ Thread_bootstrap_native_wrapper_entry_point_offset = 688;
static constexpr dart::compiler::target::word
- Thread_call_to_runtime_entry_point_offset = 528;
+ Thread_call_to_runtime_entry_point_offset = 568;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1760;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1808;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 1728;
+ Thread_double_truncate_round_supported_offset = 1776;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 1768;
+ Thread_service_extension_stream_offset = 1816;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
- 608;
-static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
+ 648;
+static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 472;
static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset =
- 616;
+ 656;
static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
- 440;
+ 480;
static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
- 696;
+ 736;
static constexpr dart::compiler::target::word
- Thread_double_negate_address_offset = 688;
+ Thread_double_negate_address_offset = 728;
static constexpr dart::compiler::target::word Thread_end_offset = 104;
static constexpr dart::compiler::target::word
- Thread_enter_safepoint_stub_offset = 480;
+ Thread_enter_safepoint_stub_offset = 520;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1680;
+ 1728;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_stub_offset = 488;
+ Thread_exit_safepoint_stub_offset = 528;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 496;
+ Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 536;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_stub_offset = 504;
+ Thread_call_native_through_safepoint_stub_offset = 544;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_entry_point_offset = 624;
+ Thread_call_native_through_safepoint_entry_point_offset = 664;
static constexpr dart::compiler::target::word
Thread_fix_allocation_stub_code_offset = 240;
static constexpr dart::compiler::target::word
Thread_fix_callers_target_code_offset = 232;
static constexpr dart::compiler::target::word
- Thread_float_absolute_address_offset = 720;
+ Thread_float_absolute_address_offset = 760;
static constexpr dart::compiler::target::word
- Thread_float_negate_address_offset = 712;
+ Thread_float_negate_address_offset = 752;
static constexpr dart::compiler::target::word Thread_float_not_address_offset =
- 704;
+ 744;
static constexpr dart::compiler::target::word
- Thread_float_zerow_address_offset = 728;
+ Thread_float_zerow_address_offset = 768;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1656;
+ 1704;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1712;
+ 1760;
static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word Thread_isolate_group_offset =
- 1776;
+ 1824;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
128;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_return_stub_offset = 448;
+ Thread_lazy_deopt_from_return_stub_offset = 488;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_throw_stub_offset = 456;
+ Thread_lazy_deopt_from_throw_stub_offset = 496;
static constexpr dart::compiler::target::word
- Thread_lazy_specialize_type_test_stub_offset = 472;
+ Thread_lazy_specialize_type_test_stub_offset = 512;
static constexpr dart::compiler::target::word
Thread_marking_stack_block_offset = 160;
static constexpr dart::compiler::target::word
- Thread_megamorphic_call_checked_entry_offset = 592;
+ Thread_megamorphic_call_checked_entry_offset = 632;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_entry_offset = 600;
+ Thread_switchable_call_miss_entry_offset = 640;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_stub_offset = 400;
+ Thread_switchable_call_miss_stub_offset = 440;
static constexpr dart::compiler::target::word
- Thread_no_scope_native_wrapper_entry_point_offset = 656;
+ Thread_no_scope_native_wrapper_entry_point_offset = 696;
static constexpr dart::compiler::target::word
Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 272;
static constexpr dart::compiler::target::word
@@ -4744,49 +4993,56 @@
Thread_range_error_shared_with_fpu_regs_stub_offset = 336;
static constexpr dart::compiler::target::word
Thread_range_error_shared_without_fpu_regs_stub_offset = 328;
+static constexpr dart::compiler::target::word Thread_resume_stub_offset = 392;
+static constexpr dart::compiler::target::word
+ Thread_return_async_not_future_stub_offset = 408;
+static constexpr dart::compiler::target::word
+ Thread_return_async_star_stub_offset = 416;
+static constexpr dart::compiler::target::word Thread_return_async_stub_offset =
+ 400;
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
- Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1664;
+ Thread_predefined_symbols_address_offset = 712;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1712;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1672;
+ Thread_saved_shadow_call_stack_offset = 1720;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1688;
+ 1736;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_stub_offset = 464;
+ Thread_slow_type_test_stub_offset = 504;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_entry_point_offset = 640;
+ Thread_slow_type_test_entry_point_offset = 680;
static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56;
static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
112;
static constexpr dart::compiler::target::word
Thread_stack_overflow_flags_offset = 120;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 584;
+ Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 624;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 392;
+ Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 432;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 576;
+ Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 616;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 384;
+ Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 424;
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
152;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_entry_point_offset = 1584;
+ Thread_suspend_state_await_entry_point_offset = 1632;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_entry_point_offset = 1576;
+ Thread_suspend_state_init_async_entry_point_offset = 1624;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_entry_point_offset = 1592;
+ Thread_suspend_state_return_async_entry_point_offset = 1640;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_not_future_entry_point_offset = 1600;
+ Thread_suspend_state_return_async_not_future_entry_point_offset = 1648;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_star_entry_point_offset = 1608;
+ Thread_suspend_state_init_async_star_entry_point_offset = 1656;
static constexpr dart::compiler::target::word
- Thread_suspend_state_yield_async_star_entry_point_offset = 1616;
+ Thread_suspend_state_yield_async_star_entry_point_offset = 1664;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_star_entry_point_offset = 1624;
+ Thread_suspend_state_return_async_star_entry_point_offset = 1672;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 1632;
+ Thread_suspend_state_handle_exception_entry_point_offset = 1680;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -4797,18 +5053,18 @@
Thread_unboxed_double_runtime_arg_offset = 192;
static constexpr dart::compiler::target::word Thread_vm_tag_offset = 176;
static constexpr dart::compiler::target::word
- Thread_write_barrier_entry_point_offset = 512;
+ Thread_write_barrier_entry_point_offset = 552;
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
64;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1696;
+ 1744;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 1704;
-static constexpr dart::compiler::target::word Thread_random_offset = 1736;
+ Thread_callback_stack_return_offset = 1752;
+static constexpr dart::compiler::target::word Thread_random_offset = 1784;
static constexpr dart::compiler::target::word
- Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1744;
+ Thread_jump_to_frame_entry_point_offset = 672;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1792;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -4903,9 +5159,9 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
Thread_write_barrier_wrappers_thread_offset[] = {
- -1, -1, -1, -1, -1, 1432, 1440, 1448, -1, -1, 1456,
- 1464, 1472, -1, -1, -1, 1480, 1488, 1496, 1504, 1512, 1520,
- 1528, 1536, -1, -1, -1, -1, 1544, 1552, 1560, 1568};
+ -1, -1, -1, -1, -1, 1480, 1488, 1496, -1, -1, 1504,
+ 1512, 1520, -1, -1, -1, 1528, 1536, 1544, 1552, 1560, 1568,
+ 1576, 1584, -1, -1, -1, -1, 1592, 1600, 1608, 1616};
static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -4979,7 +5235,7 @@
static constexpr dart::compiler::target::word SingleTargetCache_InstanceSize =
32;
static constexpr dart::compiler::target::word StackTrace_InstanceSize = 40;
-static constexpr dart::compiler::target::word SuspendState_HeaderSize = 48;
+static constexpr dart::compiler::target::word SuspendState_HeaderSize = 56;
static constexpr dart::compiler::target::word String_InstanceSize = 16;
static constexpr dart::compiler::target::word SubtypeTestCache_InstanceSize =
16;
@@ -5007,10 +5263,14 @@
#else // !defined(PRODUCT)
#if defined(TARGET_ARCH_ARM) && !defined(DART_COMPRESSED_POINTERS)
+static constexpr dart::compiler::target::word Code_active_instructions_offset =
+ 56;
static constexpr dart::compiler::target::word Function_usage_counter_offset =
72;
static constexpr dart::compiler::target::word
ICData_receivers_static_type_offset = 16;
+static constexpr dart::compiler::target::word
+ SuspendState_frame_capacity_offset = 4;
static constexpr dart::compiler::target::word Array_elements_start_offset = 12;
static constexpr dart::compiler::target::word Array_element_size = 4;
static constexpr dart::compiler::target::word Code_elements_start_offset = 76;
@@ -5116,9 +5376,8 @@
Closure_instantiator_type_arguments_offset = 4;
static constexpr dart::compiler::target::word
ClosureData_default_type_arguments_kind_offset = 16;
+static constexpr dart::compiler::target::word Code_instructions_offset = 24;
static constexpr dart::compiler::target::word Code_object_pool_offset = 20;
-static constexpr dart::compiler::target::word Code_saved_instructions_offset =
- 24;
static constexpr dart::compiler::target::word Code_owner_offset = 28;
static constexpr dart::compiler::target::word Context_num_variables_offset = 4;
static constexpr dart::compiler::target::word Context_parent_offset = 8;
@@ -5207,6 +5466,22 @@
188;
static constexpr dart::compiler::target::word ObjectStore_type_type_offset =
112;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_await_offset = 504;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_handle_exception_offset = 528;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_offset = 500;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_star_offset = 516;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_offset = 508;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_not_future_offset = 512;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_star_offset = 524;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_yield_async_star_offset = 520;
static constexpr dart::compiler::target::word OneByteString_data_offset = 12;
static constexpr dart::compiler::target::word PointerBase_data_offset = 4;
static constexpr dart::compiler::target::word Pointer_type_arguments_offset = 8;
@@ -5225,124 +5500,128 @@
static constexpr dart::compiler::target::word String_hash_offset = 8;
static constexpr dart::compiler::target::word String_length_offset = 4;
static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 4;
+static constexpr dart::compiler::target::word SuspendState_FrameSizeGrowthGap =
+ 2;
static constexpr dart::compiler::target::word
- SuspendState_error_callback_offset = 20;
+ SuspendState_error_callback_offset = 24;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
- 4;
+ 8;
static constexpr dart::compiler::target::word
- SuspendState_function_data_offset = 12;
-static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
-static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
+ SuspendState_function_data_offset = 16;
+static constexpr dart::compiler::target::word SuspendState_payload_offset = 28;
+static constexpr dart::compiler::target::word SuspendState_pc_offset = 12;
static constexpr dart::compiler::target::word
- SuspendState_then_callback_offset = 16;
+ SuspendState_then_callback_offset = 20;
static constexpr dart::compiler::target::word
- Thread_AllocateArray_entry_point_offset = 380;
+ Thread_AllocateArray_entry_point_offset = 400;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 792;
+ 816;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 796;
+ 820;
static constexpr dart::compiler::target::word
- Thread_array_write_barrier_entry_point_offset = 272;
+ Thread_array_write_barrier_entry_point_offset = 292;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_with_fpu_regs_entry_point_offset = 280;
+ Thread_allocate_mint_with_fpu_regs_entry_point_offset = 300;
static constexpr dart::compiler::target::word
Thread_allocate_mint_with_fpu_regs_stub_offset = 184;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_without_fpu_regs_entry_point_offset = 284;
+ Thread_allocate_mint_without_fpu_regs_entry_point_offset = 304;
static constexpr dart::compiler::target::word
Thread_allocate_mint_without_fpu_regs_stub_offset = 188;
static constexpr dart::compiler::target::word
- Thread_allocate_object_entry_point_offset = 288;
+ Thread_allocate_object_entry_point_offset = 308;
static constexpr dart::compiler::target::word
Thread_allocate_object_stub_offset = 192;
static constexpr dart::compiler::target::word
- Thread_allocate_object_parameterized_entry_point_offset = 292;
+ Thread_allocate_object_parameterized_entry_point_offset = 312;
static constexpr dart::compiler::target::word
Thread_allocate_object_parameterized_stub_offset = 196;
static constexpr dart::compiler::target::word
- Thread_allocate_object_slow_entry_point_offset = 296;
+ Thread_allocate_object_slow_entry_point_offset = 316;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 832;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 856;
static constexpr dart::compiler::target::word
- Thread_auto_scope_native_wrapper_entry_point_offset = 344;
+ Thread_async_exception_handler_stub_offset = 204;
+static constexpr dart::compiler::target::word
+ Thread_auto_scope_native_wrapper_entry_point_offset = 364;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
static constexpr dart::compiler::target::word Thread_bool_true_offset = 116;
static constexpr dart::compiler::target::word
- Thread_bootstrap_native_wrapper_entry_point_offset = 336;
+ Thread_bootstrap_native_wrapper_entry_point_offset = 356;
static constexpr dart::compiler::target::word
- Thread_call_to_runtime_entry_point_offset = 276;
+ Thread_call_to_runtime_entry_point_offset = 296;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 856;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 880;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 44;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 836;
+ Thread_double_truncate_round_supported_offset = 860;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 860;
+ Thread_service_extension_stream_offset = 884;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
- 316;
-static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
+ 336;
+static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset =
- 320;
+ 340;
static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
- 232;
+ 252;
static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
- 360;
+ 380;
static constexpr dart::compiler::target::word
- Thread_double_negate_address_offset = 356;
+ Thread_double_negate_address_offset = 376;
static constexpr dart::compiler::target::word Thread_end_offset = 52;
static constexpr dart::compiler::target::word
- Thread_enter_safepoint_stub_offset = 252;
+ Thread_enter_safepoint_stub_offset = 272;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 812;
+ 836;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_stub_offset = 256;
+ Thread_exit_safepoint_stub_offset = 276;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 260;
+ Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 280;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_stub_offset = 264;
+ Thread_call_native_through_safepoint_stub_offset = 284;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_entry_point_offset = 324;
+ Thread_call_native_through_safepoint_entry_point_offset = 344;
static constexpr dart::compiler::target::word
Thread_fix_allocation_stub_code_offset = 132;
static constexpr dart::compiler::target::word
Thread_fix_callers_target_code_offset = 128;
static constexpr dart::compiler::target::word
- Thread_float_absolute_address_offset = 372;
+ Thread_float_absolute_address_offset = 392;
static constexpr dart::compiler::target::word
- Thread_float_negate_address_offset = 368;
+ Thread_float_negate_address_offset = 388;
static constexpr dart::compiler::target::word Thread_float_not_address_offset =
- 364;
+ 384;
static constexpr dart::compiler::target::word
- Thread_float_zerow_address_offset = 376;
+ Thread_float_zerow_address_offset = 396;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 800;
+ 824;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 136;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 828;
+ 852;
static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 864;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 888;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
64;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_return_stub_offset = 236;
+ Thread_lazy_deopt_from_return_stub_offset = 256;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_throw_stub_offset = 240;
+ Thread_lazy_deopt_from_throw_stub_offset = 260;
static constexpr dart::compiler::target::word
- Thread_lazy_specialize_type_test_stub_offset = 248;
+ Thread_lazy_specialize_type_test_stub_offset = 268;
static constexpr dart::compiler::target::word
Thread_marking_stack_block_offset = 80;
static constexpr dart::compiler::target::word
- Thread_megamorphic_call_checked_entry_offset = 308;
+ Thread_megamorphic_call_checked_entry_offset = 328;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_entry_offset = 312;
+ Thread_switchable_call_miss_entry_offset = 332;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_stub_offset = 212;
+ Thread_switchable_call_miss_stub_offset = 232;
static constexpr dart::compiler::target::word
- Thread_no_scope_native_wrapper_entry_point_offset = 340;
+ Thread_no_scope_native_wrapper_entry_point_offset = 360;
static constexpr dart::compiler::target::word
Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 148;
static constexpr dart::compiler::target::word
@@ -5363,49 +5642,56 @@
Thread_range_error_shared_with_fpu_regs_stub_offset = 180;
static constexpr dart::compiler::target::word
Thread_range_error_shared_without_fpu_regs_stub_offset = 176;
+static constexpr dart::compiler::target::word Thread_resume_stub_offset = 208;
+static constexpr dart::compiler::target::word
+ Thread_return_async_not_future_stub_offset = 216;
+static constexpr dart::compiler::target::word
+ Thread_return_async_star_stub_offset = 220;
+static constexpr dart::compiler::target::word Thread_return_async_stub_offset =
+ 212;
static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
static constexpr dart::compiler::target::word
- Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 804;
+ Thread_predefined_symbols_address_offset = 368;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 828;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 808;
+ Thread_saved_shadow_call_stack_offset = 832;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 816;
+ 840;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_stub_offset = 244;
+ Thread_slow_type_test_stub_offset = 264;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_entry_point_offset = 332;
+ Thread_slow_type_test_entry_point_offset = 352;
static constexpr dart::compiler::target::word Thread_stack_limit_offset = 28;
static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
56;
static constexpr dart::compiler::target::word
Thread_stack_overflow_flags_offset = 60;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 304;
+ Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 324;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 208;
+ Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 228;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 300;
+ Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 320;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 204;
+ Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 224;
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
76;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_entry_point_offset = 764;
+ Thread_suspend_state_await_entry_point_offset = 788;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_entry_point_offset = 760;
+ Thread_suspend_state_init_async_entry_point_offset = 784;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_entry_point_offset = 768;
+ Thread_suspend_state_return_async_entry_point_offset = 792;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_not_future_entry_point_offset = 772;
+ Thread_suspend_state_return_async_not_future_entry_point_offset = 796;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_star_entry_point_offset = 776;
+ Thread_suspend_state_init_async_star_entry_point_offset = 800;
static constexpr dart::compiler::target::word
- Thread_suspend_state_yield_async_star_entry_point_offset = 780;
+ Thread_suspend_state_yield_async_star_entry_point_offset = 804;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_star_entry_point_offset = 784;
+ Thread_suspend_state_return_async_star_entry_point_offset = 808;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 788;
+ Thread_suspend_state_handle_exception_entry_point_offset = 812;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 72;
static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -5416,17 +5702,17 @@
Thread_unboxed_double_runtime_arg_offset = 104;
static constexpr dart::compiler::target::word Thread_vm_tag_offset = 88;
static constexpr dart::compiler::target::word
- Thread_write_barrier_entry_point_offset = 268;
+ Thread_write_barrier_entry_point_offset = 288;
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
32;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 820;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 844;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 824;
-static constexpr dart::compiler::target::word Thread_random_offset = 840;
+ Thread_callback_stack_return_offset = 848;
+static constexpr dart::compiler::target::word Thread_random_offset = 864;
static constexpr dart::compiler::target::word
- Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 848;
+ Thread_jump_to_frame_entry_point_offset = 348;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 872;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -5519,7 +5805,7 @@
4, 12, 8, 16};
static constexpr dart::compiler::target::word
Thread_write_barrier_wrappers_thread_offset[] = {
- 728, 732, 736, 740, 744, -1, 748, -1, 752, 756, -1, -1, -1, -1, -1, -1};
+ 752, 756, 760, 764, 768, -1, 772, -1, 776, 780, -1, -1, -1, -1, -1, -1};
static constexpr dart::compiler::target::word AbstractType_InstanceSize = 12;
static constexpr dart::compiler::target::word ApiError_InstanceSize = 8;
static constexpr dart::compiler::target::word Array_header_size = 12;
@@ -5593,7 +5879,7 @@
static constexpr dart::compiler::target::word SingleTargetCache_InstanceSize =
16;
static constexpr dart::compiler::target::word StackTrace_InstanceSize = 20;
-static constexpr dart::compiler::target::word SuspendState_HeaderSize = 24;
+static constexpr dart::compiler::target::word SuspendState_HeaderSize = 28;
static constexpr dart::compiler::target::word String_InstanceSize = 12;
static constexpr dart::compiler::target::word SubtypeTestCache_InstanceSize = 8;
static constexpr dart::compiler::target::word LoadingUnit_InstanceSize = 20;
@@ -5618,10 +5904,14 @@
#endif // defined(TARGET_ARCH_ARM) && !defined(DART_COMPRESSED_POINTERS)
#if defined(TARGET_ARCH_X64) && !defined(DART_COMPRESSED_POINTERS)
+static constexpr dart::compiler::target::word Code_active_instructions_offset =
+ 112;
static constexpr dart::compiler::target::word Function_usage_counter_offset =
112;
static constexpr dart::compiler::target::word
ICData_receivers_static_type_offset = 32;
+static constexpr dart::compiler::target::word
+ SuspendState_frame_capacity_offset = 8;
static constexpr dart::compiler::target::word Array_elements_start_offset = 24;
static constexpr dart::compiler::target::word Array_element_size = 8;
static constexpr dart::compiler::target::word Code_elements_start_offset = 144;
@@ -5730,9 +6020,8 @@
Closure_instantiator_type_arguments_offset = 8;
static constexpr dart::compiler::target::word
ClosureData_default_type_arguments_kind_offset = 32;
+static constexpr dart::compiler::target::word Code_instructions_offset = 48;
static constexpr dart::compiler::target::word Code_object_pool_offset = 40;
-static constexpr dart::compiler::target::word Code_saved_instructions_offset =
- 48;
static constexpr dart::compiler::target::word Code_owner_offset = 56;
static constexpr dart::compiler::target::word Context_num_variables_offset = 8;
static constexpr dart::compiler::target::word Context_parent_offset = 16;
@@ -5821,6 +6110,22 @@
376;
static constexpr dart::compiler::target::word ObjectStore_type_type_offset =
224;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_await_offset = 1008;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_handle_exception_offset = 1056;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_offset = 1000;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_star_offset = 1032;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_offset = 1016;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_not_future_offset = 1024;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_star_offset = 1048;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_yield_async_star_offset = 1040;
static constexpr dart::compiler::target::word OneByteString_data_offset = 16;
static constexpr dart::compiler::target::word PointerBase_data_offset = 8;
static constexpr dart::compiler::target::word Pointer_type_arguments_offset =
@@ -5840,126 +6145,130 @@
static constexpr dart::compiler::target::word String_hash_offset = 4;
static constexpr dart::compiler::target::word String_length_offset = 8;
static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8;
+static constexpr dart::compiler::target::word SuspendState_FrameSizeGrowthGap =
+ 2;
static constexpr dart::compiler::target::word
- SuspendState_error_callback_offset = 40;
+ SuspendState_error_callback_offset = 48;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
- 8;
+ 16;
static constexpr dart::compiler::target::word
- SuspendState_function_data_offset = 24;
-static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
-static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
+ SuspendState_function_data_offset = 32;
+static constexpr dart::compiler::target::word SuspendState_payload_offset = 56;
+static constexpr dart::compiler::target::word SuspendState_pc_offset = 24;
static constexpr dart::compiler::target::word
- SuspendState_then_callback_offset = 32;
+ SuspendState_then_callback_offset = 40;
static constexpr dart::compiler::target::word
- Thread_AllocateArray_entry_point_offset = 736;
+ Thread_AllocateArray_entry_point_offset = 776;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1584;
+ 1632;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 1592;
+ 1640;
static constexpr dart::compiler::target::word
- Thread_array_write_barrier_entry_point_offset = 520;
+ Thread_array_write_barrier_entry_point_offset = 560;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_with_fpu_regs_entry_point_offset = 536;
+ Thread_allocate_mint_with_fpu_regs_entry_point_offset = 576;
static constexpr dart::compiler::target::word
Thread_allocate_mint_with_fpu_regs_stub_offset = 344;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_without_fpu_regs_entry_point_offset = 544;
+ Thread_allocate_mint_without_fpu_regs_entry_point_offset = 584;
static constexpr dart::compiler::target::word
Thread_allocate_mint_without_fpu_regs_stub_offset = 352;
static constexpr dart::compiler::target::word
- Thread_allocate_object_entry_point_offset = 552;
+ Thread_allocate_object_entry_point_offset = 592;
static constexpr dart::compiler::target::word
Thread_allocate_object_stub_offset = 360;
static constexpr dart::compiler::target::word
- Thread_allocate_object_parameterized_entry_point_offset = 560;
+ Thread_allocate_object_parameterized_entry_point_offset = 600;
static constexpr dart::compiler::target::word
Thread_allocate_object_parameterized_stub_offset = 368;
static constexpr dart::compiler::target::word
- Thread_allocate_object_slow_entry_point_offset = 568;
+ Thread_allocate_object_slow_entry_point_offset = 608;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1664;
+ 1712;
static constexpr dart::compiler::target::word
- Thread_auto_scope_native_wrapper_entry_point_offset = 664;
+ Thread_async_exception_handler_stub_offset = 384;
+static constexpr dart::compiler::target::word
+ Thread_auto_scope_native_wrapper_entry_point_offset = 704;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
static constexpr dart::compiler::target::word Thread_bool_true_offset = 208;
static constexpr dart::compiler::target::word
- Thread_bootstrap_native_wrapper_entry_point_offset = 648;
+ Thread_bootstrap_native_wrapper_entry_point_offset = 688;
static constexpr dart::compiler::target::word
- Thread_call_to_runtime_entry_point_offset = 528;
+ Thread_call_to_runtime_entry_point_offset = 568;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1704;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1752;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 1672;
+ Thread_double_truncate_round_supported_offset = 1720;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 1712;
+ Thread_service_extension_stream_offset = 1760;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
- 608;
-static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
+ 648;
+static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 472;
static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset =
- 616;
+ 656;
static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
- 440;
+ 480;
static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
- 696;
+ 736;
static constexpr dart::compiler::target::word
- Thread_double_negate_address_offset = 688;
+ Thread_double_negate_address_offset = 728;
static constexpr dart::compiler::target::word Thread_end_offset = 104;
static constexpr dart::compiler::target::word
- Thread_enter_safepoint_stub_offset = 480;
+ Thread_enter_safepoint_stub_offset = 520;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1624;
+ 1672;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_stub_offset = 488;
+ Thread_exit_safepoint_stub_offset = 528;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 496;
+ Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 536;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_stub_offset = 504;
+ Thread_call_native_through_safepoint_stub_offset = 544;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_entry_point_offset = 624;
+ Thread_call_native_through_safepoint_entry_point_offset = 664;
static constexpr dart::compiler::target::word
Thread_fix_allocation_stub_code_offset = 240;
static constexpr dart::compiler::target::word
Thread_fix_callers_target_code_offset = 232;
static constexpr dart::compiler::target::word
- Thread_float_absolute_address_offset = 720;
+ Thread_float_absolute_address_offset = 760;
static constexpr dart::compiler::target::word
- Thread_float_negate_address_offset = 712;
+ Thread_float_negate_address_offset = 752;
static constexpr dart::compiler::target::word Thread_float_not_address_offset =
- 704;
+ 744;
static constexpr dart::compiler::target::word
- Thread_float_zerow_address_offset = 728;
+ Thread_float_zerow_address_offset = 768;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1600;
+ 1648;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1656;
+ 1704;
static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word Thread_isolate_group_offset =
- 1720;
+ 1768;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
128;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_return_stub_offset = 448;
+ Thread_lazy_deopt_from_return_stub_offset = 488;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_throw_stub_offset = 456;
+ Thread_lazy_deopt_from_throw_stub_offset = 496;
static constexpr dart::compiler::target::word
- Thread_lazy_specialize_type_test_stub_offset = 472;
+ Thread_lazy_specialize_type_test_stub_offset = 512;
static constexpr dart::compiler::target::word
Thread_marking_stack_block_offset = 160;
static constexpr dart::compiler::target::word
- Thread_megamorphic_call_checked_entry_offset = 592;
+ Thread_megamorphic_call_checked_entry_offset = 632;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_entry_offset = 600;
+ Thread_switchable_call_miss_entry_offset = 640;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_stub_offset = 400;
+ Thread_switchable_call_miss_stub_offset = 440;
static constexpr dart::compiler::target::word
- Thread_no_scope_native_wrapper_entry_point_offset = 656;
+ Thread_no_scope_native_wrapper_entry_point_offset = 696;
static constexpr dart::compiler::target::word
Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 272;
static constexpr dart::compiler::target::word
@@ -5980,49 +6289,56 @@
Thread_range_error_shared_with_fpu_regs_stub_offset = 336;
static constexpr dart::compiler::target::word
Thread_range_error_shared_without_fpu_regs_stub_offset = 328;
+static constexpr dart::compiler::target::word Thread_resume_stub_offset = 392;
+static constexpr dart::compiler::target::word
+ Thread_return_async_not_future_stub_offset = 408;
+static constexpr dart::compiler::target::word
+ Thread_return_async_star_stub_offset = 416;
+static constexpr dart::compiler::target::word Thread_return_async_stub_offset =
+ 400;
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
- Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1608;
+ Thread_predefined_symbols_address_offset = 712;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1656;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1616;
+ Thread_saved_shadow_call_stack_offset = 1664;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1632;
+ 1680;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_stub_offset = 464;
+ Thread_slow_type_test_stub_offset = 504;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_entry_point_offset = 640;
+ Thread_slow_type_test_entry_point_offset = 680;
static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56;
static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
112;
static constexpr dart::compiler::target::word
Thread_stack_overflow_flags_offset = 120;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 584;
+ Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 624;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 392;
+ Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 432;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 576;
+ Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 616;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 384;
+ Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 424;
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
152;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_entry_point_offset = 1528;
+ Thread_suspend_state_await_entry_point_offset = 1576;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_entry_point_offset = 1520;
+ Thread_suspend_state_init_async_entry_point_offset = 1568;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_entry_point_offset = 1536;
+ Thread_suspend_state_return_async_entry_point_offset = 1584;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
+ Thread_suspend_state_return_async_not_future_entry_point_offset = 1592;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+ Thread_suspend_state_init_async_star_entry_point_offset = 1600;
static constexpr dart::compiler::target::word
- Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+ Thread_suspend_state_yield_async_star_entry_point_offset = 1608;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+ Thread_suspend_state_return_async_star_entry_point_offset = 1616;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 1576;
+ Thread_suspend_state_handle_exception_entry_point_offset = 1624;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -6033,18 +6349,18 @@
Thread_unboxed_double_runtime_arg_offset = 192;
static constexpr dart::compiler::target::word Thread_vm_tag_offset = 176;
static constexpr dart::compiler::target::word
- Thread_write_barrier_entry_point_offset = 512;
+ Thread_write_barrier_entry_point_offset = 552;
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
64;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1640;
+ 1688;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 1648;
-static constexpr dart::compiler::target::word Thread_random_offset = 1680;
+ Thread_callback_stack_return_offset = 1696;
+static constexpr dart::compiler::target::word Thread_random_offset = 1728;
static constexpr dart::compiler::target::word
- Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1688;
+ Thread_jump_to_frame_entry_point_offset = 672;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1736;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -6139,8 +6455,8 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
Thread_write_barrier_wrappers_thread_offset[] = {
- 1432, 1440, 1448, 1456, -1, -1, 1464, 1472,
- 1480, 1488, 1496, -1, 1504, 1512, -1, -1};
+ 1480, 1488, 1496, 1504, -1, -1, 1512, 1520,
+ 1528, 1536, 1544, -1, 1552, 1560, -1, -1};
static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -6214,7 +6530,7 @@
static constexpr dart::compiler::target::word SingleTargetCache_InstanceSize =
32;
static constexpr dart::compiler::target::word StackTrace_InstanceSize = 40;
-static constexpr dart::compiler::target::word SuspendState_HeaderSize = 48;
+static constexpr dart::compiler::target::word SuspendState_HeaderSize = 56;
static constexpr dart::compiler::target::word String_InstanceSize = 16;
static constexpr dart::compiler::target::word SubtypeTestCache_InstanceSize =
16;
@@ -6240,10 +6556,14 @@
#endif // defined(TARGET_ARCH_X64) && !defined(DART_COMPRESSED_POINTERS)
#if defined(TARGET_ARCH_IA32) && !defined(DART_COMPRESSED_POINTERS)
+static constexpr dart::compiler::target::word Code_active_instructions_offset =
+ 56;
static constexpr dart::compiler::target::word Function_usage_counter_offset =
72;
static constexpr dart::compiler::target::word
ICData_receivers_static_type_offset = 16;
+static constexpr dart::compiler::target::word
+ SuspendState_frame_capacity_offset = 4;
static constexpr dart::compiler::target::word Array_elements_start_offset = 12;
static constexpr dart::compiler::target::word Array_element_size = 4;
static constexpr dart::compiler::target::word Code_elements_start_offset = 76;
@@ -6349,9 +6669,8 @@
Closure_instantiator_type_arguments_offset = 4;
static constexpr dart::compiler::target::word
ClosureData_default_type_arguments_kind_offset = 16;
+static constexpr dart::compiler::target::word Code_instructions_offset = 24;
static constexpr dart::compiler::target::word Code_object_pool_offset = 20;
-static constexpr dart::compiler::target::word Code_saved_instructions_offset =
- 24;
static constexpr dart::compiler::target::word Code_owner_offset = 28;
static constexpr dart::compiler::target::word Context_num_variables_offset = 4;
static constexpr dart::compiler::target::word Context_parent_offset = 8;
@@ -6440,6 +6759,22 @@
188;
static constexpr dart::compiler::target::word ObjectStore_type_type_offset =
112;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_await_offset = 504;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_handle_exception_offset = 528;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_offset = 500;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_star_offset = 516;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_offset = 508;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_not_future_offset = 512;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_star_offset = 524;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_yield_async_star_offset = 520;
static constexpr dart::compiler::target::word OneByteString_data_offset = 12;
static constexpr dart::compiler::target::word PointerBase_data_offset = 4;
static constexpr dart::compiler::target::word Pointer_type_arguments_offset = 8;
@@ -6458,124 +6793,128 @@
static constexpr dart::compiler::target::word String_hash_offset = 8;
static constexpr dart::compiler::target::word String_length_offset = 4;
static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 4;
+static constexpr dart::compiler::target::word SuspendState_FrameSizeGrowthGap =
+ 2;
static constexpr dart::compiler::target::word
- SuspendState_error_callback_offset = 20;
+ SuspendState_error_callback_offset = 24;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
- 4;
+ 8;
static constexpr dart::compiler::target::word
- SuspendState_function_data_offset = 12;
-static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
-static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
+ SuspendState_function_data_offset = 16;
+static constexpr dart::compiler::target::word SuspendState_payload_offset = 28;
+static constexpr dart::compiler::target::word SuspendState_pc_offset = 12;
static constexpr dart::compiler::target::word
- SuspendState_then_callback_offset = 16;
+ SuspendState_then_callback_offset = 20;
static constexpr dart::compiler::target::word
- Thread_AllocateArray_entry_point_offset = 380;
+ Thread_AllocateArray_entry_point_offset = 400;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 760;
+ 784;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 764;
+ 788;
static constexpr dart::compiler::target::word
- Thread_array_write_barrier_entry_point_offset = 272;
+ Thread_array_write_barrier_entry_point_offset = 292;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_with_fpu_regs_entry_point_offset = 280;
+ Thread_allocate_mint_with_fpu_regs_entry_point_offset = 300;
static constexpr dart::compiler::target::word
Thread_allocate_mint_with_fpu_regs_stub_offset = 184;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_without_fpu_regs_entry_point_offset = 284;
+ Thread_allocate_mint_without_fpu_regs_entry_point_offset = 304;
static constexpr dart::compiler::target::word
Thread_allocate_mint_without_fpu_regs_stub_offset = 188;
static constexpr dart::compiler::target::word
- Thread_allocate_object_entry_point_offset = 288;
+ Thread_allocate_object_entry_point_offset = 308;
static constexpr dart::compiler::target::word
Thread_allocate_object_stub_offset = 192;
static constexpr dart::compiler::target::word
- Thread_allocate_object_parameterized_entry_point_offset = 292;
+ Thread_allocate_object_parameterized_entry_point_offset = 312;
static constexpr dart::compiler::target::word
Thread_allocate_object_parameterized_stub_offset = 196;
static constexpr dart::compiler::target::word
- Thread_allocate_object_slow_entry_point_offset = 296;
+ Thread_allocate_object_slow_entry_point_offset = 316;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 800;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 824;
static constexpr dart::compiler::target::word
- Thread_auto_scope_native_wrapper_entry_point_offset = 344;
+ Thread_async_exception_handler_stub_offset = 204;
+static constexpr dart::compiler::target::word
+ Thread_auto_scope_native_wrapper_entry_point_offset = 364;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
static constexpr dart::compiler::target::word Thread_bool_true_offset = 116;
static constexpr dart::compiler::target::word
- Thread_bootstrap_native_wrapper_entry_point_offset = 336;
+ Thread_bootstrap_native_wrapper_entry_point_offset = 356;
static constexpr dart::compiler::target::word
- Thread_call_to_runtime_entry_point_offset = 276;
+ Thread_call_to_runtime_entry_point_offset = 296;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 824;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 848;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 44;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 804;
+ Thread_double_truncate_round_supported_offset = 828;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 828;
+ Thread_service_extension_stream_offset = 852;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
- 316;
-static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
+ 336;
+static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset =
- 320;
+ 340;
static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
- 232;
+ 252;
static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
- 360;
+ 380;
static constexpr dart::compiler::target::word
- Thread_double_negate_address_offset = 356;
+ Thread_double_negate_address_offset = 376;
static constexpr dart::compiler::target::word Thread_end_offset = 52;
static constexpr dart::compiler::target::word
- Thread_enter_safepoint_stub_offset = 252;
+ Thread_enter_safepoint_stub_offset = 272;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 780;
+ 804;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_stub_offset = 256;
+ Thread_exit_safepoint_stub_offset = 276;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 260;
+ Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 280;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_stub_offset = 264;
+ Thread_call_native_through_safepoint_stub_offset = 284;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_entry_point_offset = 324;
+ Thread_call_native_through_safepoint_entry_point_offset = 344;
static constexpr dart::compiler::target::word
Thread_fix_allocation_stub_code_offset = 132;
static constexpr dart::compiler::target::word
Thread_fix_callers_target_code_offset = 128;
static constexpr dart::compiler::target::word
- Thread_float_absolute_address_offset = 372;
+ Thread_float_absolute_address_offset = 392;
static constexpr dart::compiler::target::word
- Thread_float_negate_address_offset = 368;
+ Thread_float_negate_address_offset = 388;
static constexpr dart::compiler::target::word Thread_float_not_address_offset =
- 364;
+ 384;
static constexpr dart::compiler::target::word
- Thread_float_zerow_address_offset = 376;
+ Thread_float_zerow_address_offset = 396;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 768;
+ 792;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 136;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 796;
+ 820;
static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 832;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 856;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
64;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_return_stub_offset = 236;
+ Thread_lazy_deopt_from_return_stub_offset = 256;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_throw_stub_offset = 240;
+ Thread_lazy_deopt_from_throw_stub_offset = 260;
static constexpr dart::compiler::target::word
- Thread_lazy_specialize_type_test_stub_offset = 248;
+ Thread_lazy_specialize_type_test_stub_offset = 268;
static constexpr dart::compiler::target::word
Thread_marking_stack_block_offset = 80;
static constexpr dart::compiler::target::word
- Thread_megamorphic_call_checked_entry_offset = 308;
+ Thread_megamorphic_call_checked_entry_offset = 328;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_entry_offset = 312;
+ Thread_switchable_call_miss_entry_offset = 332;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_stub_offset = 212;
+ Thread_switchable_call_miss_stub_offset = 232;
static constexpr dart::compiler::target::word
- Thread_no_scope_native_wrapper_entry_point_offset = 340;
+ Thread_no_scope_native_wrapper_entry_point_offset = 360;
static constexpr dart::compiler::target::word
Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 148;
static constexpr dart::compiler::target::word
@@ -6596,49 +6935,56 @@
Thread_range_error_shared_with_fpu_regs_stub_offset = 180;
static constexpr dart::compiler::target::word
Thread_range_error_shared_without_fpu_regs_stub_offset = 176;
+static constexpr dart::compiler::target::word Thread_resume_stub_offset = 208;
+static constexpr dart::compiler::target::word
+ Thread_return_async_not_future_stub_offset = 216;
+static constexpr dart::compiler::target::word
+ Thread_return_async_star_stub_offset = 220;
+static constexpr dart::compiler::target::word Thread_return_async_stub_offset =
+ 212;
static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
static constexpr dart::compiler::target::word
- Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 772;
+ Thread_predefined_symbols_address_offset = 368;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 796;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 776;
+ Thread_saved_shadow_call_stack_offset = 800;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 784;
+ 808;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_stub_offset = 244;
+ Thread_slow_type_test_stub_offset = 264;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_entry_point_offset = 332;
+ Thread_slow_type_test_entry_point_offset = 352;
static constexpr dart::compiler::target::word Thread_stack_limit_offset = 28;
static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
56;
static constexpr dart::compiler::target::word
Thread_stack_overflow_flags_offset = 60;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 304;
+ Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 324;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 208;
+ Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 228;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 300;
+ Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 320;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 204;
+ Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 224;
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
76;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_entry_point_offset = 732;
+ Thread_suspend_state_await_entry_point_offset = 756;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_entry_point_offset = 728;
+ Thread_suspend_state_init_async_entry_point_offset = 752;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_entry_point_offset = 736;
+ Thread_suspend_state_return_async_entry_point_offset = 760;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_not_future_entry_point_offset = 740;
+ Thread_suspend_state_return_async_not_future_entry_point_offset = 764;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_star_entry_point_offset = 744;
+ Thread_suspend_state_init_async_star_entry_point_offset = 768;
static constexpr dart::compiler::target::word
- Thread_suspend_state_yield_async_star_entry_point_offset = 748;
+ Thread_suspend_state_yield_async_star_entry_point_offset = 772;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_star_entry_point_offset = 752;
+ Thread_suspend_state_return_async_star_entry_point_offset = 776;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 756;
+ Thread_suspend_state_handle_exception_entry_point_offset = 780;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 72;
static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -6649,17 +6995,17 @@
Thread_unboxed_double_runtime_arg_offset = 104;
static constexpr dart::compiler::target::word Thread_vm_tag_offset = 88;
static constexpr dart::compiler::target::word
- Thread_write_barrier_entry_point_offset = 268;
+ Thread_write_barrier_entry_point_offset = 288;
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
32;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 788;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 812;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 792;
-static constexpr dart::compiler::target::word Thread_random_offset = 808;
+ Thread_callback_stack_return_offset = 816;
+static constexpr dart::compiler::target::word Thread_random_offset = 832;
static constexpr dart::compiler::target::word
- Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 816;
+ Thread_jump_to_frame_entry_point_offset = 348;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 840;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -6823,7 +7169,7 @@
static constexpr dart::compiler::target::word SingleTargetCache_InstanceSize =
16;
static constexpr dart::compiler::target::word StackTrace_InstanceSize = 20;
-static constexpr dart::compiler::target::word SuspendState_HeaderSize = 24;
+static constexpr dart::compiler::target::word SuspendState_HeaderSize = 28;
static constexpr dart::compiler::target::word String_InstanceSize = 12;
static constexpr dart::compiler::target::word SubtypeTestCache_InstanceSize = 8;
static constexpr dart::compiler::target::word LoadingUnit_InstanceSize = 20;
@@ -6848,10 +7194,14 @@
#endif // defined(TARGET_ARCH_IA32) && !defined(DART_COMPRESSED_POINTERS)
#if defined(TARGET_ARCH_ARM64) && !defined(DART_COMPRESSED_POINTERS)
+static constexpr dart::compiler::target::word Code_active_instructions_offset =
+ 112;
static constexpr dart::compiler::target::word Function_usage_counter_offset =
112;
static constexpr dart::compiler::target::word
ICData_receivers_static_type_offset = 32;
+static constexpr dart::compiler::target::word
+ SuspendState_frame_capacity_offset = 8;
static constexpr dart::compiler::target::word Array_elements_start_offset = 24;
static constexpr dart::compiler::target::word Array_element_size = 8;
static constexpr dart::compiler::target::word Code_elements_start_offset = 144;
@@ -6960,9 +7310,8 @@
Closure_instantiator_type_arguments_offset = 8;
static constexpr dart::compiler::target::word
ClosureData_default_type_arguments_kind_offset = 32;
+static constexpr dart::compiler::target::word Code_instructions_offset = 48;
static constexpr dart::compiler::target::word Code_object_pool_offset = 40;
-static constexpr dart::compiler::target::word Code_saved_instructions_offset =
- 48;
static constexpr dart::compiler::target::word Code_owner_offset = 56;
static constexpr dart::compiler::target::word Context_num_variables_offset = 8;
static constexpr dart::compiler::target::word Context_parent_offset = 16;
@@ -7051,6 +7400,22 @@
376;
static constexpr dart::compiler::target::word ObjectStore_type_type_offset =
224;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_await_offset = 1008;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_handle_exception_offset = 1056;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_offset = 1000;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_star_offset = 1032;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_offset = 1016;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_not_future_offset = 1024;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_star_offset = 1048;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_yield_async_star_offset = 1040;
static constexpr dart::compiler::target::word OneByteString_data_offset = 16;
static constexpr dart::compiler::target::word PointerBase_data_offset = 8;
static constexpr dart::compiler::target::word Pointer_type_arguments_offset =
@@ -7070,126 +7435,130 @@
static constexpr dart::compiler::target::word String_hash_offset = 4;
static constexpr dart::compiler::target::word String_length_offset = 8;
static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8;
+static constexpr dart::compiler::target::word SuspendState_FrameSizeGrowthGap =
+ 2;
static constexpr dart::compiler::target::word
- SuspendState_error_callback_offset = 40;
+ SuspendState_error_callback_offset = 48;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
- 8;
+ 16;
static constexpr dart::compiler::target::word
- SuspendState_function_data_offset = 24;
-static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
-static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
+ SuspendState_function_data_offset = 32;
+static constexpr dart::compiler::target::word SuspendState_payload_offset = 56;
+static constexpr dart::compiler::target::word SuspendState_pc_offset = 24;
static constexpr dart::compiler::target::word
- SuspendState_then_callback_offset = 32;
+ SuspendState_then_callback_offset = 40;
static constexpr dart::compiler::target::word
- Thread_AllocateArray_entry_point_offset = 736;
+ Thread_AllocateArray_entry_point_offset = 776;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1648;
+ 1696;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 1656;
+ 1704;
static constexpr dart::compiler::target::word
- Thread_array_write_barrier_entry_point_offset = 520;
+ Thread_array_write_barrier_entry_point_offset = 560;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_with_fpu_regs_entry_point_offset = 536;
+ Thread_allocate_mint_with_fpu_regs_entry_point_offset = 576;
static constexpr dart::compiler::target::word
Thread_allocate_mint_with_fpu_regs_stub_offset = 344;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_without_fpu_regs_entry_point_offset = 544;
+ Thread_allocate_mint_without_fpu_regs_entry_point_offset = 584;
static constexpr dart::compiler::target::word
Thread_allocate_mint_without_fpu_regs_stub_offset = 352;
static constexpr dart::compiler::target::word
- Thread_allocate_object_entry_point_offset = 552;
+ Thread_allocate_object_entry_point_offset = 592;
static constexpr dart::compiler::target::word
Thread_allocate_object_stub_offset = 360;
static constexpr dart::compiler::target::word
- Thread_allocate_object_parameterized_entry_point_offset = 560;
+ Thread_allocate_object_parameterized_entry_point_offset = 600;
static constexpr dart::compiler::target::word
Thread_allocate_object_parameterized_stub_offset = 368;
static constexpr dart::compiler::target::word
- Thread_allocate_object_slow_entry_point_offset = 568;
+ Thread_allocate_object_slow_entry_point_offset = 608;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1728;
+ 1776;
static constexpr dart::compiler::target::word
- Thread_auto_scope_native_wrapper_entry_point_offset = 664;
+ Thread_async_exception_handler_stub_offset = 384;
+static constexpr dart::compiler::target::word
+ Thread_auto_scope_native_wrapper_entry_point_offset = 704;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
static constexpr dart::compiler::target::word Thread_bool_true_offset = 208;
static constexpr dart::compiler::target::word
- Thread_bootstrap_native_wrapper_entry_point_offset = 648;
+ Thread_bootstrap_native_wrapper_entry_point_offset = 688;
static constexpr dart::compiler::target::word
- Thread_call_to_runtime_entry_point_offset = 528;
+ Thread_call_to_runtime_entry_point_offset = 568;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1768;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1816;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 1736;
+ Thread_double_truncate_round_supported_offset = 1784;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 1776;
+ Thread_service_extension_stream_offset = 1824;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
- 608;
-static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
+ 648;
+static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 472;
static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset =
- 616;
+ 656;
static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
- 440;
+ 480;
static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
- 696;
+ 736;
static constexpr dart::compiler::target::word
- Thread_double_negate_address_offset = 688;
+ Thread_double_negate_address_offset = 728;
static constexpr dart::compiler::target::word Thread_end_offset = 104;
static constexpr dart::compiler::target::word
- Thread_enter_safepoint_stub_offset = 480;
+ Thread_enter_safepoint_stub_offset = 520;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1688;
+ 1736;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_stub_offset = 488;
+ Thread_exit_safepoint_stub_offset = 528;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 496;
+ Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 536;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_stub_offset = 504;
+ Thread_call_native_through_safepoint_stub_offset = 544;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_entry_point_offset = 624;
+ Thread_call_native_through_safepoint_entry_point_offset = 664;
static constexpr dart::compiler::target::word
Thread_fix_allocation_stub_code_offset = 240;
static constexpr dart::compiler::target::word
Thread_fix_callers_target_code_offset = 232;
static constexpr dart::compiler::target::word
- Thread_float_absolute_address_offset = 720;
+ Thread_float_absolute_address_offset = 760;
static constexpr dart::compiler::target::word
- Thread_float_negate_address_offset = 712;
+ Thread_float_negate_address_offset = 752;
static constexpr dart::compiler::target::word Thread_float_not_address_offset =
- 704;
+ 744;
static constexpr dart::compiler::target::word
- Thread_float_zerow_address_offset = 728;
+ Thread_float_zerow_address_offset = 768;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1664;
+ 1712;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1720;
+ 1768;
static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word Thread_isolate_group_offset =
- 1784;
+ 1832;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
128;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_return_stub_offset = 448;
+ Thread_lazy_deopt_from_return_stub_offset = 488;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_throw_stub_offset = 456;
+ Thread_lazy_deopt_from_throw_stub_offset = 496;
static constexpr dart::compiler::target::word
- Thread_lazy_specialize_type_test_stub_offset = 472;
+ Thread_lazy_specialize_type_test_stub_offset = 512;
static constexpr dart::compiler::target::word
Thread_marking_stack_block_offset = 160;
static constexpr dart::compiler::target::word
- Thread_megamorphic_call_checked_entry_offset = 592;
+ Thread_megamorphic_call_checked_entry_offset = 632;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_entry_offset = 600;
+ Thread_switchable_call_miss_entry_offset = 640;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_stub_offset = 400;
+ Thread_switchable_call_miss_stub_offset = 440;
static constexpr dart::compiler::target::word
- Thread_no_scope_native_wrapper_entry_point_offset = 656;
+ Thread_no_scope_native_wrapper_entry_point_offset = 696;
static constexpr dart::compiler::target::word
Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 272;
static constexpr dart::compiler::target::word
@@ -7210,49 +7579,56 @@
Thread_range_error_shared_with_fpu_regs_stub_offset = 336;
static constexpr dart::compiler::target::word
Thread_range_error_shared_without_fpu_regs_stub_offset = 328;
+static constexpr dart::compiler::target::word Thread_resume_stub_offset = 392;
+static constexpr dart::compiler::target::word
+ Thread_return_async_not_future_stub_offset = 408;
+static constexpr dart::compiler::target::word
+ Thread_return_async_star_stub_offset = 416;
+static constexpr dart::compiler::target::word Thread_return_async_stub_offset =
+ 400;
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
- Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1672;
+ Thread_predefined_symbols_address_offset = 712;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1720;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1680;
+ Thread_saved_shadow_call_stack_offset = 1728;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1696;
+ 1744;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_stub_offset = 464;
+ Thread_slow_type_test_stub_offset = 504;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_entry_point_offset = 640;
+ Thread_slow_type_test_entry_point_offset = 680;
static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56;
static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
112;
static constexpr dart::compiler::target::word
Thread_stack_overflow_flags_offset = 120;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 584;
+ Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 624;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 392;
+ Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 432;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 576;
+ Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 616;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 384;
+ Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 424;
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
152;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_entry_point_offset = 1592;
+ Thread_suspend_state_await_entry_point_offset = 1640;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_entry_point_offset = 1584;
+ Thread_suspend_state_init_async_entry_point_offset = 1632;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_entry_point_offset = 1600;
+ Thread_suspend_state_return_async_entry_point_offset = 1648;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
+ Thread_suspend_state_return_async_not_future_entry_point_offset = 1656;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+ Thread_suspend_state_init_async_star_entry_point_offset = 1664;
static constexpr dart::compiler::target::word
- Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+ Thread_suspend_state_yield_async_star_entry_point_offset = 1672;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+ Thread_suspend_state_return_async_star_entry_point_offset = 1680;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 1640;
+ Thread_suspend_state_handle_exception_entry_point_offset = 1688;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -7263,18 +7639,18 @@
Thread_unboxed_double_runtime_arg_offset = 192;
static constexpr dart::compiler::target::word Thread_vm_tag_offset = 176;
static constexpr dart::compiler::target::word
- Thread_write_barrier_entry_point_offset = 512;
+ Thread_write_barrier_entry_point_offset = 552;
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
64;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1704;
+ 1752;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 1712;
-static constexpr dart::compiler::target::word Thread_random_offset = 1744;
+ Thread_callback_stack_return_offset = 1760;
+static constexpr dart::compiler::target::word Thread_random_offset = 1792;
static constexpr dart::compiler::target::word
- Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1752;
+ Thread_jump_to_frame_entry_point_offset = 672;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1800;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -7369,9 +7745,9 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
Thread_write_barrier_wrappers_thread_offset[] = {
- 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496, 1504, 1512,
- 1520, 1528, 1536, 1544, -1, -1, -1, -1, 1552, 1560, -1,
- -1, 1568, 1576, 1584, -1, -1, -1, -1, -1, -1};
+ 1480, 1488, 1496, 1504, 1512, 1520, 1528, 1536, 1544, 1552, 1560,
+ 1568, 1576, 1584, 1592, -1, -1, -1, -1, 1600, 1608, -1,
+ -1, 1616, 1624, 1632, -1, -1, -1, -1, -1, -1};
static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -7445,7 +7821,7 @@
static constexpr dart::compiler::target::word SingleTargetCache_InstanceSize =
32;
static constexpr dart::compiler::target::word StackTrace_InstanceSize = 40;
-static constexpr dart::compiler::target::word SuspendState_HeaderSize = 48;
+static constexpr dart::compiler::target::word SuspendState_HeaderSize = 56;
static constexpr dart::compiler::target::word String_InstanceSize = 16;
static constexpr dart::compiler::target::word SubtypeTestCache_InstanceSize =
16;
@@ -7471,10 +7847,14 @@
#endif // defined(TARGET_ARCH_ARM64) && !defined(DART_COMPRESSED_POINTERS)
#if defined(TARGET_ARCH_X64) && defined(DART_COMPRESSED_POINTERS)
+static constexpr dart::compiler::target::word Code_active_instructions_offset =
+ 112;
static constexpr dart::compiler::target::word Function_usage_counter_offset =
80;
static constexpr dart::compiler::target::word
ICData_receivers_static_type_offset = 32;
+static constexpr dart::compiler::target::word
+ SuspendState_frame_capacity_offset = 8;
static constexpr dart::compiler::target::word Array_elements_start_offset = 16;
static constexpr dart::compiler::target::word Array_element_size = 4;
static constexpr dart::compiler::target::word Code_elements_start_offset = 144;
@@ -7580,9 +7960,8 @@
Closure_instantiator_type_arguments_offset = 8;
static constexpr dart::compiler::target::word
ClosureData_default_type_arguments_kind_offset = 20;
+static constexpr dart::compiler::target::word Code_instructions_offset = 48;
static constexpr dart::compiler::target::word Code_object_pool_offset = 40;
-static constexpr dart::compiler::target::word Code_saved_instructions_offset =
- 48;
static constexpr dart::compiler::target::word Code_owner_offset = 56;
static constexpr dart::compiler::target::word Context_num_variables_offset = 8;
static constexpr dart::compiler::target::word Context_parent_offset = 12;
@@ -7671,6 +8050,22 @@
376;
static constexpr dart::compiler::target::word ObjectStore_type_type_offset =
224;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_await_offset = 1008;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_handle_exception_offset = 1056;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_offset = 1000;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_star_offset = 1032;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_offset = 1016;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_not_future_offset = 1024;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_star_offset = 1048;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_yield_async_star_offset = 1040;
static constexpr dart::compiler::target::word OneByteString_data_offset = 16;
static constexpr dart::compiler::target::word PointerBase_data_offset = 8;
static constexpr dart::compiler::target::word Pointer_type_arguments_offset =
@@ -7690,126 +8085,130 @@
static constexpr dart::compiler::target::word String_hash_offset = 4;
static constexpr dart::compiler::target::word String_length_offset = 8;
static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8;
+static constexpr dart::compiler::target::word SuspendState_FrameSizeGrowthGap =
+ 2;
static constexpr dart::compiler::target::word
- SuspendState_error_callback_offset = 32;
+ SuspendState_error_callback_offset = 40;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
- 8;
+ 16;
static constexpr dart::compiler::target::word
- SuspendState_function_data_offset = 24;
-static constexpr dart::compiler::target::word SuspendState_payload_offset = 40;
-static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
+ SuspendState_function_data_offset = 32;
+static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
+static constexpr dart::compiler::target::word SuspendState_pc_offset = 24;
static constexpr dart::compiler::target::word
- SuspendState_then_callback_offset = 28;
+ SuspendState_then_callback_offset = 36;
static constexpr dart::compiler::target::word
- Thread_AllocateArray_entry_point_offset = 736;
+ Thread_AllocateArray_entry_point_offset = 776;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1584;
+ 1632;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 1592;
+ 1640;
static constexpr dart::compiler::target::word
- Thread_array_write_barrier_entry_point_offset = 520;
+ Thread_array_write_barrier_entry_point_offset = 560;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_with_fpu_regs_entry_point_offset = 536;
+ Thread_allocate_mint_with_fpu_regs_entry_point_offset = 576;
static constexpr dart::compiler::target::word
Thread_allocate_mint_with_fpu_regs_stub_offset = 344;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_without_fpu_regs_entry_point_offset = 544;
+ Thread_allocate_mint_without_fpu_regs_entry_point_offset = 584;
static constexpr dart::compiler::target::word
Thread_allocate_mint_without_fpu_regs_stub_offset = 352;
static constexpr dart::compiler::target::word
- Thread_allocate_object_entry_point_offset = 552;
+ Thread_allocate_object_entry_point_offset = 592;
static constexpr dart::compiler::target::word
Thread_allocate_object_stub_offset = 360;
static constexpr dart::compiler::target::word
- Thread_allocate_object_parameterized_entry_point_offset = 560;
+ Thread_allocate_object_parameterized_entry_point_offset = 600;
static constexpr dart::compiler::target::word
Thread_allocate_object_parameterized_stub_offset = 368;
static constexpr dart::compiler::target::word
- Thread_allocate_object_slow_entry_point_offset = 568;
+ Thread_allocate_object_slow_entry_point_offset = 608;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1664;
+ 1712;
static constexpr dart::compiler::target::word
- Thread_auto_scope_native_wrapper_entry_point_offset = 664;
+ Thread_async_exception_handler_stub_offset = 384;
+static constexpr dart::compiler::target::word
+ Thread_auto_scope_native_wrapper_entry_point_offset = 704;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
static constexpr dart::compiler::target::word Thread_bool_true_offset = 208;
static constexpr dart::compiler::target::word
- Thread_bootstrap_native_wrapper_entry_point_offset = 648;
+ Thread_bootstrap_native_wrapper_entry_point_offset = 688;
static constexpr dart::compiler::target::word
- Thread_call_to_runtime_entry_point_offset = 528;
+ Thread_call_to_runtime_entry_point_offset = 568;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1704;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1752;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 1672;
+ Thread_double_truncate_round_supported_offset = 1720;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 1712;
+ Thread_service_extension_stream_offset = 1760;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
- 608;
-static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
+ 648;
+static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 472;
static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset =
- 616;
+ 656;
static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
- 440;
+ 480;
static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
- 696;
+ 736;
static constexpr dart::compiler::target::word
- Thread_double_negate_address_offset = 688;
+ Thread_double_negate_address_offset = 728;
static constexpr dart::compiler::target::word Thread_end_offset = 104;
static constexpr dart::compiler::target::word
- Thread_enter_safepoint_stub_offset = 480;
+ Thread_enter_safepoint_stub_offset = 520;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1624;
+ 1672;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_stub_offset = 488;
+ Thread_exit_safepoint_stub_offset = 528;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 496;
+ Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 536;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_stub_offset = 504;
+ Thread_call_native_through_safepoint_stub_offset = 544;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_entry_point_offset = 624;
+ Thread_call_native_through_safepoint_entry_point_offset = 664;
static constexpr dart::compiler::target::word
Thread_fix_allocation_stub_code_offset = 240;
static constexpr dart::compiler::target::word
Thread_fix_callers_target_code_offset = 232;
static constexpr dart::compiler::target::word
- Thread_float_absolute_address_offset = 720;
+ Thread_float_absolute_address_offset = 760;
static constexpr dart::compiler::target::word
- Thread_float_negate_address_offset = 712;
+ Thread_float_negate_address_offset = 752;
static constexpr dart::compiler::target::word Thread_float_not_address_offset =
- 704;
+ 744;
static constexpr dart::compiler::target::word
- Thread_float_zerow_address_offset = 728;
+ Thread_float_zerow_address_offset = 768;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1600;
+ 1648;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1656;
+ 1704;
static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word Thread_isolate_group_offset =
- 1720;
+ 1768;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
128;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_return_stub_offset = 448;
+ Thread_lazy_deopt_from_return_stub_offset = 488;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_throw_stub_offset = 456;
+ Thread_lazy_deopt_from_throw_stub_offset = 496;
static constexpr dart::compiler::target::word
- Thread_lazy_specialize_type_test_stub_offset = 472;
+ Thread_lazy_specialize_type_test_stub_offset = 512;
static constexpr dart::compiler::target::word
Thread_marking_stack_block_offset = 160;
static constexpr dart::compiler::target::word
- Thread_megamorphic_call_checked_entry_offset = 592;
+ Thread_megamorphic_call_checked_entry_offset = 632;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_entry_offset = 600;
+ Thread_switchable_call_miss_entry_offset = 640;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_stub_offset = 400;
+ Thread_switchable_call_miss_stub_offset = 440;
static constexpr dart::compiler::target::word
- Thread_no_scope_native_wrapper_entry_point_offset = 656;
+ Thread_no_scope_native_wrapper_entry_point_offset = 696;
static constexpr dart::compiler::target::word
Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 272;
static constexpr dart::compiler::target::word
@@ -7830,49 +8229,56 @@
Thread_range_error_shared_with_fpu_regs_stub_offset = 336;
static constexpr dart::compiler::target::word
Thread_range_error_shared_without_fpu_regs_stub_offset = 328;
+static constexpr dart::compiler::target::word Thread_resume_stub_offset = 392;
+static constexpr dart::compiler::target::word
+ Thread_return_async_not_future_stub_offset = 408;
+static constexpr dart::compiler::target::word
+ Thread_return_async_star_stub_offset = 416;
+static constexpr dart::compiler::target::word Thread_return_async_stub_offset =
+ 400;
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
- Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1608;
+ Thread_predefined_symbols_address_offset = 712;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1656;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1616;
+ Thread_saved_shadow_call_stack_offset = 1664;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1632;
+ 1680;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_stub_offset = 464;
+ Thread_slow_type_test_stub_offset = 504;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_entry_point_offset = 640;
+ Thread_slow_type_test_entry_point_offset = 680;
static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56;
static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
112;
static constexpr dart::compiler::target::word
Thread_stack_overflow_flags_offset = 120;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 584;
+ Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 624;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 392;
+ Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 432;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 576;
+ Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 616;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 384;
+ Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 424;
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
152;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_entry_point_offset = 1528;
+ Thread_suspend_state_await_entry_point_offset = 1576;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_entry_point_offset = 1520;
+ Thread_suspend_state_init_async_entry_point_offset = 1568;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_entry_point_offset = 1536;
+ Thread_suspend_state_return_async_entry_point_offset = 1584;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
+ Thread_suspend_state_return_async_not_future_entry_point_offset = 1592;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+ Thread_suspend_state_init_async_star_entry_point_offset = 1600;
static constexpr dart::compiler::target::word
- Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+ Thread_suspend_state_yield_async_star_entry_point_offset = 1608;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+ Thread_suspend_state_return_async_star_entry_point_offset = 1616;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 1576;
+ Thread_suspend_state_handle_exception_entry_point_offset = 1624;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -7883,18 +8289,18 @@
Thread_unboxed_double_runtime_arg_offset = 192;
static constexpr dart::compiler::target::word Thread_vm_tag_offset = 176;
static constexpr dart::compiler::target::word
- Thread_write_barrier_entry_point_offset = 512;
+ Thread_write_barrier_entry_point_offset = 552;
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
64;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1640;
+ 1688;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 1648;
-static constexpr dart::compiler::target::word Thread_random_offset = 1680;
+ Thread_callback_stack_return_offset = 1696;
+static constexpr dart::compiler::target::word Thread_random_offset = 1728;
static constexpr dart::compiler::target::word
- Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1688;
+ Thread_jump_to_frame_entry_point_offset = 672;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1736;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -7989,8 +8395,8 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
Thread_write_barrier_wrappers_thread_offset[] = {
- 1432, 1440, 1448, 1456, -1, -1, 1464, 1472,
- 1480, 1488, 1496, -1, 1504, 1512, -1, -1};
+ 1480, 1488, 1496, 1504, -1, -1, 1512, 1520,
+ 1528, 1536, 1544, -1, 1552, 1560, -1, -1};
static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
static constexpr dart::compiler::target::word Array_header_size = 16;
@@ -8064,7 +8470,7 @@
static constexpr dart::compiler::target::word SingleTargetCache_InstanceSize =
32;
static constexpr dart::compiler::target::word StackTrace_InstanceSize = 24;
-static constexpr dart::compiler::target::word SuspendState_HeaderSize = 40;
+static constexpr dart::compiler::target::word SuspendState_HeaderSize = 48;
static constexpr dart::compiler::target::word String_InstanceSize = 16;
static constexpr dart::compiler::target::word SubtypeTestCache_InstanceSize =
16;
@@ -8090,10 +8496,14 @@
#endif // defined(TARGET_ARCH_X64) && defined(DART_COMPRESSED_POINTERS)
#if defined(TARGET_ARCH_ARM64) && defined(DART_COMPRESSED_POINTERS)
+static constexpr dart::compiler::target::word Code_active_instructions_offset =
+ 112;
static constexpr dart::compiler::target::word Function_usage_counter_offset =
80;
static constexpr dart::compiler::target::word
ICData_receivers_static_type_offset = 32;
+static constexpr dart::compiler::target::word
+ SuspendState_frame_capacity_offset = 8;
static constexpr dart::compiler::target::word Array_elements_start_offset = 16;
static constexpr dart::compiler::target::word Array_element_size = 4;
static constexpr dart::compiler::target::word Code_elements_start_offset = 144;
@@ -8199,9 +8609,8 @@
Closure_instantiator_type_arguments_offset = 8;
static constexpr dart::compiler::target::word
ClosureData_default_type_arguments_kind_offset = 20;
+static constexpr dart::compiler::target::word Code_instructions_offset = 48;
static constexpr dart::compiler::target::word Code_object_pool_offset = 40;
-static constexpr dart::compiler::target::word Code_saved_instructions_offset =
- 48;
static constexpr dart::compiler::target::word Code_owner_offset = 56;
static constexpr dart::compiler::target::word Context_num_variables_offset = 8;
static constexpr dart::compiler::target::word Context_parent_offset = 12;
@@ -8290,6 +8699,22 @@
376;
static constexpr dart::compiler::target::word ObjectStore_type_type_offset =
224;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_await_offset = 1008;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_handle_exception_offset = 1056;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_offset = 1000;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_star_offset = 1032;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_offset = 1016;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_not_future_offset = 1024;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_star_offset = 1048;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_yield_async_star_offset = 1040;
static constexpr dart::compiler::target::word OneByteString_data_offset = 16;
static constexpr dart::compiler::target::word PointerBase_data_offset = 8;
static constexpr dart::compiler::target::word Pointer_type_arguments_offset =
@@ -8309,126 +8734,130 @@
static constexpr dart::compiler::target::word String_hash_offset = 4;
static constexpr dart::compiler::target::word String_length_offset = 8;
static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8;
+static constexpr dart::compiler::target::word SuspendState_FrameSizeGrowthGap =
+ 2;
static constexpr dart::compiler::target::word
- SuspendState_error_callback_offset = 32;
+ SuspendState_error_callback_offset = 40;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
- 8;
+ 16;
static constexpr dart::compiler::target::word
- SuspendState_function_data_offset = 24;
-static constexpr dart::compiler::target::word SuspendState_payload_offset = 40;
-static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
+ SuspendState_function_data_offset = 32;
+static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
+static constexpr dart::compiler::target::word SuspendState_pc_offset = 24;
static constexpr dart::compiler::target::word
- SuspendState_then_callback_offset = 28;
+ SuspendState_then_callback_offset = 36;
static constexpr dart::compiler::target::word
- Thread_AllocateArray_entry_point_offset = 736;
+ Thread_AllocateArray_entry_point_offset = 776;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1648;
+ 1696;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 1656;
+ 1704;
static constexpr dart::compiler::target::word
- Thread_array_write_barrier_entry_point_offset = 520;
+ Thread_array_write_barrier_entry_point_offset = 560;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_with_fpu_regs_entry_point_offset = 536;
+ Thread_allocate_mint_with_fpu_regs_entry_point_offset = 576;
static constexpr dart::compiler::target::word
Thread_allocate_mint_with_fpu_regs_stub_offset = 344;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_without_fpu_regs_entry_point_offset = 544;
+ Thread_allocate_mint_without_fpu_regs_entry_point_offset = 584;
static constexpr dart::compiler::target::word
Thread_allocate_mint_without_fpu_regs_stub_offset = 352;
static constexpr dart::compiler::target::word
- Thread_allocate_object_entry_point_offset = 552;
+ Thread_allocate_object_entry_point_offset = 592;
static constexpr dart::compiler::target::word
Thread_allocate_object_stub_offset = 360;
static constexpr dart::compiler::target::word
- Thread_allocate_object_parameterized_entry_point_offset = 560;
+ Thread_allocate_object_parameterized_entry_point_offset = 600;
static constexpr dart::compiler::target::word
Thread_allocate_object_parameterized_stub_offset = 368;
static constexpr dart::compiler::target::word
- Thread_allocate_object_slow_entry_point_offset = 568;
+ Thread_allocate_object_slow_entry_point_offset = 608;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1728;
+ 1776;
static constexpr dart::compiler::target::word
- Thread_auto_scope_native_wrapper_entry_point_offset = 664;
+ Thread_async_exception_handler_stub_offset = 384;
+static constexpr dart::compiler::target::word
+ Thread_auto_scope_native_wrapper_entry_point_offset = 704;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
static constexpr dart::compiler::target::word Thread_bool_true_offset = 208;
static constexpr dart::compiler::target::word
- Thread_bootstrap_native_wrapper_entry_point_offset = 648;
+ Thread_bootstrap_native_wrapper_entry_point_offset = 688;
static constexpr dart::compiler::target::word
- Thread_call_to_runtime_entry_point_offset = 528;
+ Thread_call_to_runtime_entry_point_offset = 568;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1768;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1816;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 1736;
+ Thread_double_truncate_round_supported_offset = 1784;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 1776;
+ Thread_service_extension_stream_offset = 1824;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
- 608;
-static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
+ 648;
+static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 472;
static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset =
- 616;
+ 656;
static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
- 440;
+ 480;
static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
- 696;
+ 736;
static constexpr dart::compiler::target::word
- Thread_double_negate_address_offset = 688;
+ Thread_double_negate_address_offset = 728;
static constexpr dart::compiler::target::word Thread_end_offset = 104;
static constexpr dart::compiler::target::word
- Thread_enter_safepoint_stub_offset = 480;
+ Thread_enter_safepoint_stub_offset = 520;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1688;
+ 1736;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_stub_offset = 488;
+ Thread_exit_safepoint_stub_offset = 528;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 496;
+ Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 536;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_stub_offset = 504;
+ Thread_call_native_through_safepoint_stub_offset = 544;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_entry_point_offset = 624;
+ Thread_call_native_through_safepoint_entry_point_offset = 664;
static constexpr dart::compiler::target::word
Thread_fix_allocation_stub_code_offset = 240;
static constexpr dart::compiler::target::word
Thread_fix_callers_target_code_offset = 232;
static constexpr dart::compiler::target::word
- Thread_float_absolute_address_offset = 720;
+ Thread_float_absolute_address_offset = 760;
static constexpr dart::compiler::target::word
- Thread_float_negate_address_offset = 712;
+ Thread_float_negate_address_offset = 752;
static constexpr dart::compiler::target::word Thread_float_not_address_offset =
- 704;
+ 744;
static constexpr dart::compiler::target::word
- Thread_float_zerow_address_offset = 728;
+ Thread_float_zerow_address_offset = 768;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1664;
+ 1712;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1720;
+ 1768;
static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word Thread_isolate_group_offset =
- 1784;
+ 1832;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
128;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_return_stub_offset = 448;
+ Thread_lazy_deopt_from_return_stub_offset = 488;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_throw_stub_offset = 456;
+ Thread_lazy_deopt_from_throw_stub_offset = 496;
static constexpr dart::compiler::target::word
- Thread_lazy_specialize_type_test_stub_offset = 472;
+ Thread_lazy_specialize_type_test_stub_offset = 512;
static constexpr dart::compiler::target::word
Thread_marking_stack_block_offset = 160;
static constexpr dart::compiler::target::word
- Thread_megamorphic_call_checked_entry_offset = 592;
+ Thread_megamorphic_call_checked_entry_offset = 632;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_entry_offset = 600;
+ Thread_switchable_call_miss_entry_offset = 640;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_stub_offset = 400;
+ Thread_switchable_call_miss_stub_offset = 440;
static constexpr dart::compiler::target::word
- Thread_no_scope_native_wrapper_entry_point_offset = 656;
+ Thread_no_scope_native_wrapper_entry_point_offset = 696;
static constexpr dart::compiler::target::word
Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 272;
static constexpr dart::compiler::target::word
@@ -8449,49 +8878,56 @@
Thread_range_error_shared_with_fpu_regs_stub_offset = 336;
static constexpr dart::compiler::target::word
Thread_range_error_shared_without_fpu_regs_stub_offset = 328;
+static constexpr dart::compiler::target::word Thread_resume_stub_offset = 392;
+static constexpr dart::compiler::target::word
+ Thread_return_async_not_future_stub_offset = 408;
+static constexpr dart::compiler::target::word
+ Thread_return_async_star_stub_offset = 416;
+static constexpr dart::compiler::target::word Thread_return_async_stub_offset =
+ 400;
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
- Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1672;
+ Thread_predefined_symbols_address_offset = 712;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1720;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1680;
+ Thread_saved_shadow_call_stack_offset = 1728;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1696;
+ 1744;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_stub_offset = 464;
+ Thread_slow_type_test_stub_offset = 504;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_entry_point_offset = 640;
+ Thread_slow_type_test_entry_point_offset = 680;
static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56;
static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
112;
static constexpr dart::compiler::target::word
Thread_stack_overflow_flags_offset = 120;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 584;
+ Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 624;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 392;
+ Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 432;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 576;
+ Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 616;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 384;
+ Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 424;
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
152;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_entry_point_offset = 1592;
+ Thread_suspend_state_await_entry_point_offset = 1640;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_entry_point_offset = 1584;
+ Thread_suspend_state_init_async_entry_point_offset = 1632;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_entry_point_offset = 1600;
+ Thread_suspend_state_return_async_entry_point_offset = 1648;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
+ Thread_suspend_state_return_async_not_future_entry_point_offset = 1656;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+ Thread_suspend_state_init_async_star_entry_point_offset = 1664;
static constexpr dart::compiler::target::word
- Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+ Thread_suspend_state_yield_async_star_entry_point_offset = 1672;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+ Thread_suspend_state_return_async_star_entry_point_offset = 1680;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 1640;
+ Thread_suspend_state_handle_exception_entry_point_offset = 1688;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -8502,18 +8938,18 @@
Thread_unboxed_double_runtime_arg_offset = 192;
static constexpr dart::compiler::target::word Thread_vm_tag_offset = 176;
static constexpr dart::compiler::target::word
- Thread_write_barrier_entry_point_offset = 512;
+ Thread_write_barrier_entry_point_offset = 552;
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
64;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1704;
+ 1752;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 1712;
-static constexpr dart::compiler::target::word Thread_random_offset = 1744;
+ Thread_callback_stack_return_offset = 1760;
+static constexpr dart::compiler::target::word Thread_random_offset = 1792;
static constexpr dart::compiler::target::word
- Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1752;
+ Thread_jump_to_frame_entry_point_offset = 672;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1800;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -8608,9 +9044,9 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
Thread_write_barrier_wrappers_thread_offset[] = {
- 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496, 1504, 1512,
- 1520, 1528, 1536, 1544, -1, -1, -1, -1, 1552, 1560, -1,
- -1, 1568, 1576, 1584, -1, -1, -1, -1, -1, -1};
+ 1480, 1488, 1496, 1504, 1512, 1520, 1528, 1536, 1544, 1552, 1560,
+ 1568, 1576, 1584, 1592, -1, -1, -1, -1, 1600, 1608, -1,
+ -1, 1616, 1624, 1632, -1, -1, -1, -1, -1, -1};
static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
static constexpr dart::compiler::target::word Array_header_size = 16;
@@ -8684,7 +9120,7 @@
static constexpr dart::compiler::target::word SingleTargetCache_InstanceSize =
32;
static constexpr dart::compiler::target::word StackTrace_InstanceSize = 24;
-static constexpr dart::compiler::target::word SuspendState_HeaderSize = 40;
+static constexpr dart::compiler::target::word SuspendState_HeaderSize = 48;
static constexpr dart::compiler::target::word String_InstanceSize = 16;
static constexpr dart::compiler::target::word SubtypeTestCache_InstanceSize =
16;
@@ -8710,10 +9146,14 @@
#endif // defined(TARGET_ARCH_ARM64) && defined(DART_COMPRESSED_POINTERS)
#if defined(TARGET_ARCH_RISCV32) && !defined(DART_COMPRESSED_POINTERS)
+static constexpr dart::compiler::target::word Code_active_instructions_offset =
+ 56;
static constexpr dart::compiler::target::word Function_usage_counter_offset =
72;
static constexpr dart::compiler::target::word
ICData_receivers_static_type_offset = 16;
+static constexpr dart::compiler::target::word
+ SuspendState_frame_capacity_offset = 4;
static constexpr dart::compiler::target::word Array_elements_start_offset = 12;
static constexpr dart::compiler::target::word Array_element_size = 4;
static constexpr dart::compiler::target::word Code_elements_start_offset = 76;
@@ -8819,9 +9259,8 @@
Closure_instantiator_type_arguments_offset = 4;
static constexpr dart::compiler::target::word
ClosureData_default_type_arguments_kind_offset = 16;
+static constexpr dart::compiler::target::word Code_instructions_offset = 24;
static constexpr dart::compiler::target::word Code_object_pool_offset = 20;
-static constexpr dart::compiler::target::word Code_saved_instructions_offset =
- 24;
static constexpr dart::compiler::target::word Code_owner_offset = 28;
static constexpr dart::compiler::target::word Context_num_variables_offset = 4;
static constexpr dart::compiler::target::word Context_parent_offset = 8;
@@ -8910,6 +9349,22 @@
188;
static constexpr dart::compiler::target::word ObjectStore_type_type_offset =
112;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_await_offset = 504;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_handle_exception_offset = 528;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_offset = 500;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_star_offset = 516;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_offset = 508;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_not_future_offset = 512;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_star_offset = 524;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_yield_async_star_offset = 520;
static constexpr dart::compiler::target::word OneByteString_data_offset = 12;
static constexpr dart::compiler::target::word PointerBase_data_offset = 4;
static constexpr dart::compiler::target::word Pointer_type_arguments_offset = 8;
@@ -8928,124 +9383,128 @@
static constexpr dart::compiler::target::word String_hash_offset = 8;
static constexpr dart::compiler::target::word String_length_offset = 4;
static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 4;
+static constexpr dart::compiler::target::word SuspendState_FrameSizeGrowthGap =
+ 2;
static constexpr dart::compiler::target::word
- SuspendState_error_callback_offset = 20;
+ SuspendState_error_callback_offset = 24;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
- 4;
+ 8;
static constexpr dart::compiler::target::word
- SuspendState_function_data_offset = 12;
-static constexpr dart::compiler::target::word SuspendState_payload_offset = 24;
-static constexpr dart::compiler::target::word SuspendState_pc_offset = 8;
+ SuspendState_function_data_offset = 16;
+static constexpr dart::compiler::target::word SuspendState_payload_offset = 28;
+static constexpr dart::compiler::target::word SuspendState_pc_offset = 12;
static constexpr dart::compiler::target::word
- SuspendState_then_callback_offset = 16;
+ SuspendState_then_callback_offset = 20;
static constexpr dart::compiler::target::word
- Thread_AllocateArray_entry_point_offset = 380;
+ Thread_AllocateArray_entry_point_offset = 400;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 832;
+ 856;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 836;
+ 860;
static constexpr dart::compiler::target::word
- Thread_array_write_barrier_entry_point_offset = 272;
+ Thread_array_write_barrier_entry_point_offset = 292;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_with_fpu_regs_entry_point_offset = 280;
+ Thread_allocate_mint_with_fpu_regs_entry_point_offset = 300;
static constexpr dart::compiler::target::word
Thread_allocate_mint_with_fpu_regs_stub_offset = 184;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_without_fpu_regs_entry_point_offset = 284;
+ Thread_allocate_mint_without_fpu_regs_entry_point_offset = 304;
static constexpr dart::compiler::target::word
Thread_allocate_mint_without_fpu_regs_stub_offset = 188;
static constexpr dart::compiler::target::word
- Thread_allocate_object_entry_point_offset = 288;
+ Thread_allocate_object_entry_point_offset = 308;
static constexpr dart::compiler::target::word
Thread_allocate_object_stub_offset = 192;
static constexpr dart::compiler::target::word
- Thread_allocate_object_parameterized_entry_point_offset = 292;
+ Thread_allocate_object_parameterized_entry_point_offset = 312;
static constexpr dart::compiler::target::word
Thread_allocate_object_parameterized_stub_offset = 196;
static constexpr dart::compiler::target::word
- Thread_allocate_object_slow_entry_point_offset = 296;
+ Thread_allocate_object_slow_entry_point_offset = 316;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 200;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 872;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 896;
static constexpr dart::compiler::target::word
- Thread_auto_scope_native_wrapper_entry_point_offset = 344;
+ Thread_async_exception_handler_stub_offset = 204;
+static constexpr dart::compiler::target::word
+ Thread_auto_scope_native_wrapper_entry_point_offset = 364;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
static constexpr dart::compiler::target::word Thread_bool_true_offset = 116;
static constexpr dart::compiler::target::word
- Thread_bootstrap_native_wrapper_entry_point_offset = 336;
+ Thread_bootstrap_native_wrapper_entry_point_offset = 356;
static constexpr dart::compiler::target::word
- Thread_call_to_runtime_entry_point_offset = 276;
+ Thread_call_to_runtime_entry_point_offset = 296;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 140;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 896;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 920;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 44;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 876;
+ Thread_double_truncate_round_supported_offset = 900;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 900;
+ Thread_service_extension_stream_offset = 924;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
- 316;
-static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 228;
+ 336;
+static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset =
- 320;
+ 340;
static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
- 232;
+ 252;
static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
- 360;
+ 380;
static constexpr dart::compiler::target::word
- Thread_double_negate_address_offset = 356;
+ Thread_double_negate_address_offset = 376;
static constexpr dart::compiler::target::word Thread_end_offset = 52;
static constexpr dart::compiler::target::word
- Thread_enter_safepoint_stub_offset = 252;
+ Thread_enter_safepoint_stub_offset = 272;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 852;
+ 876;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_stub_offset = 256;
+ Thread_exit_safepoint_stub_offset = 276;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 260;
+ Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 280;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_stub_offset = 264;
+ Thread_call_native_through_safepoint_stub_offset = 284;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_entry_point_offset = 324;
+ Thread_call_native_through_safepoint_entry_point_offset = 344;
static constexpr dart::compiler::target::word
Thread_fix_allocation_stub_code_offset = 132;
static constexpr dart::compiler::target::word
Thread_fix_callers_target_code_offset = 128;
static constexpr dart::compiler::target::word
- Thread_float_absolute_address_offset = 372;
+ Thread_float_absolute_address_offset = 392;
static constexpr dart::compiler::target::word
- Thread_float_negate_address_offset = 368;
+ Thread_float_negate_address_offset = 388;
static constexpr dart::compiler::target::word Thread_float_not_address_offset =
- 364;
+ 384;
static constexpr dart::compiler::target::word
- Thread_float_zerow_address_offset = 376;
+ Thread_float_zerow_address_offset = 396;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 840;
+ 864;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 136;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 868;
+ 892;
static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 904;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 928;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
64;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_return_stub_offset = 236;
+ Thread_lazy_deopt_from_return_stub_offset = 256;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_throw_stub_offset = 240;
+ Thread_lazy_deopt_from_throw_stub_offset = 260;
static constexpr dart::compiler::target::word
- Thread_lazy_specialize_type_test_stub_offset = 248;
+ Thread_lazy_specialize_type_test_stub_offset = 268;
static constexpr dart::compiler::target::word
Thread_marking_stack_block_offset = 80;
static constexpr dart::compiler::target::word
- Thread_megamorphic_call_checked_entry_offset = 308;
+ Thread_megamorphic_call_checked_entry_offset = 328;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_entry_offset = 312;
+ Thread_switchable_call_miss_entry_offset = 332;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_stub_offset = 212;
+ Thread_switchable_call_miss_stub_offset = 232;
static constexpr dart::compiler::target::word
- Thread_no_scope_native_wrapper_entry_point_offset = 340;
+ Thread_no_scope_native_wrapper_entry_point_offset = 360;
static constexpr dart::compiler::target::word
Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 148;
static constexpr dart::compiler::target::word
@@ -9066,49 +9525,56 @@
Thread_range_error_shared_with_fpu_regs_stub_offset = 180;
static constexpr dart::compiler::target::word
Thread_range_error_shared_without_fpu_regs_stub_offset = 176;
+static constexpr dart::compiler::target::word Thread_resume_stub_offset = 208;
+static constexpr dart::compiler::target::word
+ Thread_return_async_not_future_stub_offset = 216;
+static constexpr dart::compiler::target::word
+ Thread_return_async_star_stub_offset = 220;
+static constexpr dart::compiler::target::word Thread_return_async_stub_offset =
+ 212;
static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
static constexpr dart::compiler::target::word
- Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 844;
+ Thread_predefined_symbols_address_offset = 368;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 868;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 848;
+ Thread_saved_shadow_call_stack_offset = 872;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 856;
+ 880;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_stub_offset = 244;
+ Thread_slow_type_test_stub_offset = 264;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_entry_point_offset = 332;
+ Thread_slow_type_test_entry_point_offset = 352;
static constexpr dart::compiler::target::word Thread_stack_limit_offset = 28;
static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
56;
static constexpr dart::compiler::target::word
Thread_stack_overflow_flags_offset = 60;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 304;
+ Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 324;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 208;
+ Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 228;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 300;
+ Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 320;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 204;
+ Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 224;
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
76;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_entry_point_offset = 804;
+ Thread_suspend_state_await_entry_point_offset = 828;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_entry_point_offset = 800;
+ Thread_suspend_state_init_async_entry_point_offset = 824;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_entry_point_offset = 808;
+ Thread_suspend_state_return_async_entry_point_offset = 832;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_not_future_entry_point_offset = 812;
+ Thread_suspend_state_return_async_not_future_entry_point_offset = 836;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_star_entry_point_offset = 816;
+ Thread_suspend_state_init_async_star_entry_point_offset = 840;
static constexpr dart::compiler::target::word
- Thread_suspend_state_yield_async_star_entry_point_offset = 820;
+ Thread_suspend_state_yield_async_star_entry_point_offset = 844;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_star_entry_point_offset = 824;
+ Thread_suspend_state_return_async_star_entry_point_offset = 848;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 828;
+ Thread_suspend_state_handle_exception_entry_point_offset = 852;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 72;
static constexpr dart::compiler::target::word Thread_top_offset = 48;
@@ -9119,17 +9585,17 @@
Thread_unboxed_double_runtime_arg_offset = 104;
static constexpr dart::compiler::target::word Thread_vm_tag_offset = 88;
static constexpr dart::compiler::target::word
- Thread_write_barrier_entry_point_offset = 268;
+ Thread_write_barrier_entry_point_offset = 288;
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
32;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 860;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 884;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 864;
-static constexpr dart::compiler::target::word Thread_random_offset = 880;
+ Thread_callback_stack_return_offset = 888;
+static constexpr dart::compiler::target::word Thread_random_offset = 904;
static constexpr dart::compiler::target::word
- Thread_jump_to_frame_entry_point_offset = 328;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 888;
+ Thread_jump_to_frame_entry_point_offset = 348;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 912;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -9222,9 +9688,9 @@
4, 12, 8, 16};
static constexpr dart::compiler::target::word
Thread_write_barrier_wrappers_thread_offset[] = {
- -1, -1, -1, -1, -1, 728, 732, 736, -1, -1, 740,
- 744, 748, -1, -1, -1, 752, 756, 760, 764, 768, 772,
- 776, 780, -1, -1, -1, -1, 784, 788, 792, 796};
+ -1, -1, -1, -1, -1, 752, 756, 760, -1, -1, 764,
+ 768, 772, -1, -1, -1, 776, 780, 784, 788, 792, 796,
+ 800, 804, -1, -1, -1, -1, 808, 812, 816, 820};
static constexpr dart::compiler::target::word AbstractType_InstanceSize = 12;
static constexpr dart::compiler::target::word ApiError_InstanceSize = 8;
static constexpr dart::compiler::target::word Array_header_size = 12;
@@ -9298,7 +9764,7 @@
static constexpr dart::compiler::target::word SingleTargetCache_InstanceSize =
16;
static constexpr dart::compiler::target::word StackTrace_InstanceSize = 20;
-static constexpr dart::compiler::target::word SuspendState_HeaderSize = 24;
+static constexpr dart::compiler::target::word SuspendState_HeaderSize = 28;
static constexpr dart::compiler::target::word String_InstanceSize = 12;
static constexpr dart::compiler::target::word SubtypeTestCache_InstanceSize = 8;
static constexpr dart::compiler::target::word LoadingUnit_InstanceSize = 20;
@@ -9323,10 +9789,14 @@
#endif // defined(TARGET_ARCH_RISCV32) && !defined(DART_COMPRESSED_POINTERS)
#if defined(TARGET_ARCH_RISCV64) && !defined(DART_COMPRESSED_POINTERS)
+static constexpr dart::compiler::target::word Code_active_instructions_offset =
+ 112;
static constexpr dart::compiler::target::word Function_usage_counter_offset =
112;
static constexpr dart::compiler::target::word
ICData_receivers_static_type_offset = 32;
+static constexpr dart::compiler::target::word
+ SuspendState_frame_capacity_offset = 8;
static constexpr dart::compiler::target::word Array_elements_start_offset = 24;
static constexpr dart::compiler::target::word Array_element_size = 8;
static constexpr dart::compiler::target::word Code_elements_start_offset = 144;
@@ -9435,9 +9905,8 @@
Closure_instantiator_type_arguments_offset = 8;
static constexpr dart::compiler::target::word
ClosureData_default_type_arguments_kind_offset = 32;
+static constexpr dart::compiler::target::word Code_instructions_offset = 48;
static constexpr dart::compiler::target::word Code_object_pool_offset = 40;
-static constexpr dart::compiler::target::word Code_saved_instructions_offset =
- 48;
static constexpr dart::compiler::target::word Code_owner_offset = 56;
static constexpr dart::compiler::target::word Context_num_variables_offset = 8;
static constexpr dart::compiler::target::word Context_parent_offset = 16;
@@ -9526,6 +9995,22 @@
376;
static constexpr dart::compiler::target::word ObjectStore_type_type_offset =
224;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_await_offset = 1008;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_handle_exception_offset = 1056;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_offset = 1000;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_init_async_star_offset = 1032;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_offset = 1016;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_not_future_offset = 1024;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_return_async_star_offset = 1048;
+static constexpr dart::compiler::target::word
+ ObjectStore_suspend_state_yield_async_star_offset = 1040;
static constexpr dart::compiler::target::word OneByteString_data_offset = 16;
static constexpr dart::compiler::target::word PointerBase_data_offset = 8;
static constexpr dart::compiler::target::word Pointer_type_arguments_offset =
@@ -9545,126 +10030,130 @@
static constexpr dart::compiler::target::word String_hash_offset = 4;
static constexpr dart::compiler::target::word String_length_offset = 8;
static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8;
+static constexpr dart::compiler::target::word SuspendState_FrameSizeGrowthGap =
+ 2;
static constexpr dart::compiler::target::word
- SuspendState_error_callback_offset = 40;
+ SuspendState_error_callback_offset = 48;
static constexpr dart::compiler::target::word SuspendState_frame_size_offset =
- 8;
+ 16;
static constexpr dart::compiler::target::word
- SuspendState_function_data_offset = 24;
-static constexpr dart::compiler::target::word SuspendState_payload_offset = 48;
-static constexpr dart::compiler::target::word SuspendState_pc_offset = 16;
+ SuspendState_function_data_offset = 32;
+static constexpr dart::compiler::target::word SuspendState_payload_offset = 56;
+static constexpr dart::compiler::target::word SuspendState_pc_offset = 24;
static constexpr dart::compiler::target::word
- SuspendState_then_callback_offset = 32;
+ SuspendState_then_callback_offset = 40;
static constexpr dart::compiler::target::word
- Thread_AllocateArray_entry_point_offset = 736;
+ Thread_AllocateArray_entry_point_offset = 776;
static constexpr dart::compiler::target::word Thread_active_exception_offset =
- 1640;
+ 1688;
static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
- 1648;
+ 1696;
static constexpr dart::compiler::target::word
- Thread_array_write_barrier_entry_point_offset = 520;
+ Thread_array_write_barrier_entry_point_offset = 560;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_with_fpu_regs_entry_point_offset = 536;
+ Thread_allocate_mint_with_fpu_regs_entry_point_offset = 576;
static constexpr dart::compiler::target::word
Thread_allocate_mint_with_fpu_regs_stub_offset = 344;
static constexpr dart::compiler::target::word
- Thread_allocate_mint_without_fpu_regs_entry_point_offset = 544;
+ Thread_allocate_mint_without_fpu_regs_entry_point_offset = 584;
static constexpr dart::compiler::target::word
Thread_allocate_mint_without_fpu_regs_stub_offset = 352;
static constexpr dart::compiler::target::word
- Thread_allocate_object_entry_point_offset = 552;
+ Thread_allocate_object_entry_point_offset = 592;
static constexpr dart::compiler::target::word
Thread_allocate_object_stub_offset = 360;
static constexpr dart::compiler::target::word
- Thread_allocate_object_parameterized_entry_point_offset = 560;
+ Thread_allocate_object_parameterized_entry_point_offset = 600;
static constexpr dart::compiler::target::word
Thread_allocate_object_parameterized_stub_offset = 368;
static constexpr dart::compiler::target::word
- Thread_allocate_object_slow_entry_point_offset = 568;
+ Thread_allocate_object_slow_entry_point_offset = 608;
static constexpr dart::compiler::target::word
Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
- 1720;
+ 1768;
static constexpr dart::compiler::target::word
- Thread_auto_scope_native_wrapper_entry_point_offset = 664;
+ Thread_async_exception_handler_stub_offset = 384;
+static constexpr dart::compiler::target::word
+ Thread_auto_scope_native_wrapper_entry_point_offset = 704;
static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
static constexpr dart::compiler::target::word Thread_bool_true_offset = 208;
static constexpr dart::compiler::target::word
- Thread_bootstrap_native_wrapper_entry_point_offset = 648;
+ Thread_bootstrap_native_wrapper_entry_point_offset = 688;
static constexpr dart::compiler::target::word
- Thread_call_to_runtime_entry_point_offset = 528;
+ Thread_call_to_runtime_entry_point_offset = 568;
static constexpr dart::compiler::target::word
Thread_call_to_runtime_stub_offset = 256;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1760;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1808;
static constexpr dart::compiler::target::word
Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- Thread_double_truncate_round_supported_offset = 1728;
+ Thread_double_truncate_round_supported_offset = 1776;
static constexpr dart::compiler::target::word
- Thread_service_extension_stream_offset = 1768;
+ Thread_service_extension_stream_offset = 1816;
static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
- 608;
-static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 432;
+ 648;
+static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 472;
static constexpr dart::compiler::target::word Thread_deoptimize_entry_offset =
- 616;
+ 656;
static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
- 440;
+ 480;
static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
- 696;
+ 736;
static constexpr dart::compiler::target::word
- Thread_double_negate_address_offset = 688;
+ Thread_double_negate_address_offset = 728;
static constexpr dart::compiler::target::word Thread_end_offset = 104;
static constexpr dart::compiler::target::word
- Thread_enter_safepoint_stub_offset = 480;
+ Thread_enter_safepoint_stub_offset = 520;
static constexpr dart::compiler::target::word Thread_execution_state_offset =
- 1680;
+ 1728;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_stub_offset = 488;
+ Thread_exit_safepoint_stub_offset = 528;
static constexpr dart::compiler::target::word
- Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 496;
+ Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 536;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_stub_offset = 504;
+ Thread_call_native_through_safepoint_stub_offset = 544;
static constexpr dart::compiler::target::word
- Thread_call_native_through_safepoint_entry_point_offset = 624;
+ Thread_call_native_through_safepoint_entry_point_offset = 664;
static constexpr dart::compiler::target::word
Thread_fix_allocation_stub_code_offset = 240;
static constexpr dart::compiler::target::word
Thread_fix_callers_target_code_offset = 232;
static constexpr dart::compiler::target::word
- Thread_float_absolute_address_offset = 720;
+ Thread_float_absolute_address_offset = 760;
static constexpr dart::compiler::target::word
- Thread_float_negate_address_offset = 712;
+ Thread_float_negate_address_offset = 752;
static constexpr dart::compiler::target::word Thread_float_not_address_offset =
- 704;
+ 744;
static constexpr dart::compiler::target::word
- Thread_float_zerow_address_offset = 728;
+ Thread_float_zerow_address_offset = 768;
static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
- 1656;
+ 1704;
static constexpr dart::compiler::target::word
Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
- 1712;
+ 1760;
static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word Thread_isolate_group_offset =
- 1776;
+ 1824;
static constexpr dart::compiler::target::word Thread_field_table_values_offset =
128;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_return_stub_offset = 448;
+ Thread_lazy_deopt_from_return_stub_offset = 488;
static constexpr dart::compiler::target::word
- Thread_lazy_deopt_from_throw_stub_offset = 456;
+ Thread_lazy_deopt_from_throw_stub_offset = 496;
static constexpr dart::compiler::target::word
- Thread_lazy_specialize_type_test_stub_offset = 472;
+ Thread_lazy_specialize_type_test_stub_offset = 512;
static constexpr dart::compiler::target::word
Thread_marking_stack_block_offset = 160;
static constexpr dart::compiler::target::word
- Thread_megamorphic_call_checked_entry_offset = 592;
+ Thread_megamorphic_call_checked_entry_offset = 632;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_entry_offset = 600;
+ Thread_switchable_call_miss_entry_offset = 640;
static constexpr dart::compiler::target::word
- Thread_switchable_call_miss_stub_offset = 400;
+ Thread_switchable_call_miss_stub_offset = 440;
static constexpr dart::compiler::target::word
- Thread_no_scope_native_wrapper_entry_point_offset = 656;
+ Thread_no_scope_native_wrapper_entry_point_offset = 696;
static constexpr dart::compiler::target::word
Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 272;
static constexpr dart::compiler::target::word
@@ -9685,49 +10174,56 @@
Thread_range_error_shared_with_fpu_regs_stub_offset = 336;
static constexpr dart::compiler::target::word
Thread_range_error_shared_without_fpu_regs_stub_offset = 328;
+static constexpr dart::compiler::target::word Thread_resume_stub_offset = 392;
+static constexpr dart::compiler::target::word
+ Thread_return_async_not_future_stub_offset = 408;
+static constexpr dart::compiler::target::word
+ Thread_return_async_star_stub_offset = 416;
+static constexpr dart::compiler::target::word Thread_return_async_stub_offset =
+ 400;
static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
static constexpr dart::compiler::target::word
- Thread_predefined_symbols_address_offset = 672;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1664;
+ Thread_predefined_symbols_address_offset = 712;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1712;
static constexpr dart::compiler::target::word
- Thread_saved_shadow_call_stack_offset = 1672;
+ Thread_saved_shadow_call_stack_offset = 1720;
static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
- 1688;
+ 1736;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_stub_offset = 464;
+ Thread_slow_type_test_stub_offset = 504;
static constexpr dart::compiler::target::word
- Thread_slow_type_test_entry_point_offset = 640;
+ Thread_slow_type_test_entry_point_offset = 680;
static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56;
static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
112;
static constexpr dart::compiler::target::word
Thread_stack_overflow_flags_offset = 120;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 584;
+ Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 624;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 392;
+ Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 432;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 576;
+ Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 616;
static constexpr dart::compiler::target::word
- Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 384;
+ Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 424;
static constexpr dart::compiler::target::word Thread_store_buffer_block_offset =
152;
static constexpr dart::compiler::target::word
- Thread_suspend_state_await_entry_point_offset = 1584;
+ Thread_suspend_state_await_entry_point_offset = 1632;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_entry_point_offset = 1576;
+ Thread_suspend_state_init_async_entry_point_offset = 1624;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_entry_point_offset = 1592;
+ Thread_suspend_state_return_async_entry_point_offset = 1640;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_not_future_entry_point_offset = 1600;
+ Thread_suspend_state_return_async_not_future_entry_point_offset = 1648;
static constexpr dart::compiler::target::word
- Thread_suspend_state_init_async_star_entry_point_offset = 1608;
+ Thread_suspend_state_init_async_star_entry_point_offset = 1656;
static constexpr dart::compiler::target::word
- Thread_suspend_state_yield_async_star_entry_point_offset = 1616;
+ Thread_suspend_state_yield_async_star_entry_point_offset = 1664;
static constexpr dart::compiler::target::word
- Thread_suspend_state_return_async_star_entry_point_offset = 1624;
+ Thread_suspend_state_return_async_star_entry_point_offset = 1672;
static constexpr dart::compiler::target::word
- Thread_suspend_state_handle_exception_entry_point_offset = 1632;
+ Thread_suspend_state_handle_exception_entry_point_offset = 1680;
static constexpr dart::compiler::target::word
Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word Thread_top_offset = 96;
@@ -9738,18 +10234,18 @@
Thread_unboxed_double_runtime_arg_offset = 192;
static constexpr dart::compiler::target::word Thread_vm_tag_offset = 176;
static constexpr dart::compiler::target::word
- Thread_write_barrier_entry_point_offset = 512;
+ Thread_write_barrier_entry_point_offset = 552;
static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
64;
static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word Thread_callback_code_offset =
- 1696;
+ 1744;
static constexpr dart::compiler::target::word
- Thread_callback_stack_return_offset = 1704;
-static constexpr dart::compiler::target::word Thread_random_offset = 1736;
+ Thread_callback_stack_return_offset = 1752;
+static constexpr dart::compiler::target::word Thread_random_offset = 1784;
static constexpr dart::compiler::target::word
- Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1744;
+ Thread_jump_to_frame_entry_point_offset = 672;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1792;
static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
0;
static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
@@ -9844,9 +10340,9 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
Thread_write_barrier_wrappers_thread_offset[] = {
- -1, -1, -1, -1, -1, 1432, 1440, 1448, -1, -1, 1456,
- 1464, 1472, -1, -1, -1, 1480, 1488, 1496, 1504, 1512, 1520,
- 1528, 1536, -1, -1, -1, -1, 1544, 1552, 1560, 1568};
+ -1, -1, -1, -1, -1, 1480, 1488, 1496, -1, -1, 1504,
+ 1512, 1520, -1, -1, -1, 1528, 1536, 1544, 1552, 1560, 1568,
+ 1576, 1584, -1, -1, -1, -1, 1592, 1600, 1608, 1616};
static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -9920,7 +10416,7 @@
static constexpr dart::compiler::target::word SingleTargetCache_InstanceSize =
32;
static constexpr dart::compiler::target::word StackTrace_InstanceSize = 40;
-static constexpr dart::compiler::target::word SuspendState_HeaderSize = 48;
+static constexpr dart::compiler::target::word SuspendState_HeaderSize = 56;
static constexpr dart::compiler::target::word String_InstanceSize = 16;
static constexpr dart::compiler::target::word SubtypeTestCache_InstanceSize =
16;
@@ -10073,9 +10569,8 @@
AOT_Closure_instantiator_type_arguments_offset = 4;
static constexpr dart::compiler::target::word
AOT_ClosureData_default_type_arguments_kind_offset = 16;
+static constexpr dart::compiler::target::word AOT_Code_instructions_offset = 24;
static constexpr dart::compiler::target::word AOT_Code_object_pool_offset = 20;
-static constexpr dart::compiler::target::word
- AOT_Code_saved_instructions_offset = 24;
static constexpr dart::compiler::target::word AOT_Code_owner_offset = 28;
static constexpr dart::compiler::target::word AOT_Context_num_variables_offset =
4;
@@ -10129,6 +10624,8 @@
28;
static constexpr dart::compiler::target::word AOT_Isolate_finalizers_offset =
40;
+static constexpr dart::compiler::target::word
+ AOT_Isolate_has_resumption_breakpoints_offset = 45;
static constexpr dart::compiler::target::word AOT_Isolate_ic_miss_code_offset =
32;
static constexpr dart::compiler::target::word
@@ -10180,6 +10677,22 @@
AOT_ObjectStore_string_type_offset = 188;
static constexpr dart::compiler::target::word AOT_ObjectStore_type_type_offset =
112;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_await_offset = 504;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_handle_exception_offset = 528;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_offset = 500;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_star_offset = 516;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_offset = 508;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_not_future_offset = 512;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_star_offset = 524;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_yield_async_star_offset = 520;
static constexpr dart::compiler::target::word AOT_OneByteString_data_offset =
12;
static constexpr dart::compiler::target::word AOT_PointerBase_data_offset = 4;
@@ -10203,6 +10716,8 @@
static constexpr dart::compiler::target::word
AOT_SubtypeTestCache_cache_offset = 4;
static constexpr dart::compiler::target::word
+ AOT_SuspendState_FrameSizeGrowthGap = 0;
+static constexpr dart::compiler::target::word
AOT_SuspendState_error_callback_offset = 20;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 4;
@@ -10214,118 +10729,120 @@
static constexpr dart::compiler::target::word
AOT_SuspendState_then_callback_offset = 16;
static constexpr dart::compiler::target::word
- AOT_Thread_AllocateArray_entry_point_offset = 380;
+ AOT_Thread_AllocateArray_entry_point_offset = 400;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 792;
+ AOT_Thread_active_exception_offset = 816;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 796;
+ AOT_Thread_active_stacktrace_offset = 820;
static constexpr dart::compiler::target::word
- AOT_Thread_array_write_barrier_entry_point_offset = 272;
+ AOT_Thread_array_write_barrier_entry_point_offset = 292;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 280;
+ AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 300;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_with_fpu_regs_stub_offset = 184;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 284;
+ AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 304;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_without_fpu_regs_stub_offset = 188;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_entry_point_offset = 288;
+ AOT_Thread_allocate_object_entry_point_offset = 308;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_stub_offset = 192;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_parameterized_entry_point_offset = 292;
+ AOT_Thread_allocate_object_parameterized_entry_point_offset = 312;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_parameterized_stub_offset = 196;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_slow_entry_point_offset = 296;
+ AOT_Thread_allocate_object_slow_entry_point_offset = 316;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 200;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 832;
+ 856;
static constexpr dart::compiler::target::word
- AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 344;
+ AOT_Thread_async_exception_handler_stub_offset = 204;
+static constexpr dart::compiler::target::word
+ AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 364;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
120;
static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 116;
static constexpr dart::compiler::target::word
- AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 336;
+ AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 356;
static constexpr dart::compiler::target::word
- AOT_Thread_call_to_runtime_entry_point_offset = 276;
+ AOT_Thread_call_to_runtime_entry_point_offset = 296;
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 140;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 856;
+ 880;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 44;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 836;
+ AOT_Thread_double_truncate_round_supported_offset = 860;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 860;
+ AOT_Thread_service_extension_stream_offset = 884;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
- 316;
+ 336;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
- 228;
+ 248;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_entry_offset = 320;
+ AOT_Thread_deoptimize_entry_offset = 340;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_stub_offset = 232;
+ AOT_Thread_deoptimize_stub_offset = 252;
static constexpr dart::compiler::target::word
- AOT_Thread_double_abs_address_offset = 360;
+ AOT_Thread_double_abs_address_offset = 380;
static constexpr dart::compiler::target::word
- AOT_Thread_double_negate_address_offset = 356;
+ AOT_Thread_double_negate_address_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_end_offset = 52;
static constexpr dart::compiler::target::word
- AOT_Thread_enter_safepoint_stub_offset = 252;
+ AOT_Thread_enter_safepoint_stub_offset = 272;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 812;
+ AOT_Thread_execution_state_offset = 836;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_stub_offset = 256;
+ AOT_Thread_exit_safepoint_stub_offset = 276;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 260;
+ AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 280;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_stub_offset = 264;
+ AOT_Thread_call_native_through_safepoint_stub_offset = 284;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_entry_point_offset = 324;
+ AOT_Thread_call_native_through_safepoint_entry_point_offset = 344;
static constexpr dart::compiler::target::word
AOT_Thread_fix_allocation_stub_code_offset = 132;
static constexpr dart::compiler::target::word
AOT_Thread_fix_callers_target_code_offset = 128;
static constexpr dart::compiler::target::word
- AOT_Thread_float_absolute_address_offset = 372;
+ AOT_Thread_float_absolute_address_offset = 392;
static constexpr dart::compiler::target::word
- AOT_Thread_float_negate_address_offset = 368;
+ AOT_Thread_float_negate_address_offset = 388;
static constexpr dart::compiler::target::word
- AOT_Thread_float_not_address_offset = 364;
+ AOT_Thread_float_not_address_offset = 384;
static constexpr dart::compiler::target::word
- AOT_Thread_float_zerow_address_offset = 376;
+ AOT_Thread_float_zerow_address_offset = 396;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 800;
+ AOT_Thread_global_object_pool_offset = 824;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 136;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 828;
+ AOT_Thread_exit_through_ffi_offset = 852;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 864;
+ 888;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 64;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_return_stub_offset = 236;
+ AOT_Thread_lazy_deopt_from_return_stub_offset = 256;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_throw_stub_offset = 240;
+ AOT_Thread_lazy_deopt_from_throw_stub_offset = 260;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_specialize_type_test_stub_offset = 248;
+ AOT_Thread_lazy_specialize_type_test_stub_offset = 268;
static constexpr dart::compiler::target::word
AOT_Thread_marking_stack_block_offset = 80;
static constexpr dart::compiler::target::word
- AOT_Thread_megamorphic_call_checked_entry_offset = 308;
+ AOT_Thread_megamorphic_call_checked_entry_offset = 328;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_entry_offset = 312;
+ AOT_Thread_switchable_call_miss_entry_offset = 332;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_stub_offset = 212;
+ AOT_Thread_switchable_call_miss_stub_offset = 232;
static constexpr dart::compiler::target::word
- AOT_Thread_no_scope_native_wrapper_entry_point_offset = 340;
+ AOT_Thread_no_scope_native_wrapper_entry_point_offset = 360;
static constexpr dart::compiler::target::word
AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 148;
static constexpr dart::compiler::target::word
@@ -10347,19 +10864,27 @@
AOT_Thread_range_error_shared_with_fpu_regs_stub_offset = 180;
static constexpr dart::compiler::target::word
AOT_Thread_range_error_shared_without_fpu_regs_stub_offset = 176;
+static constexpr dart::compiler::target::word AOT_Thread_resume_stub_offset =
+ 208;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_not_future_stub_offset = 216;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_star_stub_offset = 220;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_stub_offset = 212;
static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
112;
static constexpr dart::compiler::target::word
- AOT_Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 804;
+ AOT_Thread_predefined_symbols_address_offset = 368;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 828;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 808;
+ AOT_Thread_saved_shadow_call_stack_offset = 832;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 816;
+ AOT_Thread_safepoint_state_offset = 840;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_stub_offset = 244;
+ AOT_Thread_slow_type_test_stub_offset = 264;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_entry_point_offset = 332;
+ AOT_Thread_slow_type_test_entry_point_offset = 352;
static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
28;
static constexpr dart::compiler::target::word
@@ -10367,31 +10892,31 @@
static constexpr dart::compiler::target::word
AOT_Thread_stack_overflow_flags_offset = 60;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 304;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 324;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 208;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 228;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 300;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 320;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 204;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 224;
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 76;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_entry_point_offset = 764;
+ AOT_Thread_suspend_state_await_entry_point_offset = 788;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_entry_point_offset = 760;
+ AOT_Thread_suspend_state_init_async_entry_point_offset = 784;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_entry_point_offset = 768;
+ AOT_Thread_suspend_state_return_async_entry_point_offset = 792;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 772;
+ AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 796;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_star_entry_point_offset = 776;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 800;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 780;
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 804;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_star_entry_point_offset = 784;
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 808;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 788;
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 812;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 48;
@@ -10403,19 +10928,19 @@
AOT_Thread_unboxed_double_runtime_arg_offset = 104;
static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_write_barrier_entry_point_offset = 268;
+ AOT_Thread_write_barrier_entry_point_offset = 288;
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_mask_offset = 32;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 36;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 820;
+ 844;
static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 824;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 840;
+ AOT_Thread_callback_stack_return_offset = 848;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 864;
static constexpr dart::compiler::target::word
- AOT_Thread_jump_to_frame_entry_point_offset = 328;
+ AOT_Thread_jump_to_frame_entry_point_offset = 348;
static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
- 848;
+ 872;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
@@ -10528,7 +11053,7 @@
4, 12, 8, 16};
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_wrappers_thread_offset[] = {
- 728, 732, 736, 740, 744, -1, 748, -1, 752, 756, -1, -1, -1, -1, -1, -1};
+ 752, 756, 760, 764, 768, -1, 772, -1, 776, 780, -1, -1, -1, -1, -1, -1};
static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
12;
static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 8;
@@ -10769,9 +11294,8 @@
AOT_Closure_instantiator_type_arguments_offset = 8;
static constexpr dart::compiler::target::word
AOT_ClosureData_default_type_arguments_kind_offset = 32;
+static constexpr dart::compiler::target::word AOT_Code_instructions_offset = 48;
static constexpr dart::compiler::target::word AOT_Code_object_pool_offset = 40;
-static constexpr dart::compiler::target::word
- AOT_Code_saved_instructions_offset = 48;
static constexpr dart::compiler::target::word AOT_Code_owner_offset = 56;
static constexpr dart::compiler::target::word AOT_Context_num_variables_offset =
8;
@@ -10825,6 +11349,8 @@
56;
static constexpr dart::compiler::target::word AOT_Isolate_finalizers_offset =
80;
+static constexpr dart::compiler::target::word
+ AOT_Isolate_has_resumption_breakpoints_offset = 89;
static constexpr dart::compiler::target::word AOT_Isolate_ic_miss_code_offset =
64;
static constexpr dart::compiler::target::word
@@ -10876,6 +11402,22 @@
AOT_ObjectStore_string_type_offset = 376;
static constexpr dart::compiler::target::word AOT_ObjectStore_type_type_offset =
224;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_await_offset = 1008;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_handle_exception_offset = 1056;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_offset = 1000;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_star_offset = 1032;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_offset = 1016;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_not_future_offset = 1024;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_star_offset = 1048;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_yield_async_star_offset = 1040;
static constexpr dart::compiler::target::word AOT_OneByteString_data_offset =
16;
static constexpr dart::compiler::target::word AOT_PointerBase_data_offset = 8;
@@ -10899,6 +11441,8 @@
static constexpr dart::compiler::target::word
AOT_SubtypeTestCache_cache_offset = 8;
static constexpr dart::compiler::target::word
+ AOT_SuspendState_FrameSizeGrowthGap = 0;
+static constexpr dart::compiler::target::word
AOT_SuspendState_error_callback_offset = 40;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 8;
@@ -10910,118 +11454,120 @@
static constexpr dart::compiler::target::word
AOT_SuspendState_then_callback_offset = 32;
static constexpr dart::compiler::target::word
- AOT_Thread_AllocateArray_entry_point_offset = 736;
+ AOT_Thread_AllocateArray_entry_point_offset = 776;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1584;
+ AOT_Thread_active_exception_offset = 1632;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1592;
+ AOT_Thread_active_stacktrace_offset = 1640;
static constexpr dart::compiler::target::word
- AOT_Thread_array_write_barrier_entry_point_offset = 520;
+ AOT_Thread_array_write_barrier_entry_point_offset = 560;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 536;
+ AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 576;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_with_fpu_regs_stub_offset = 344;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 544;
+ AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 584;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_without_fpu_regs_stub_offset = 352;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_entry_point_offset = 552;
+ AOT_Thread_allocate_object_entry_point_offset = 592;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_stub_offset = 360;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_parameterized_entry_point_offset = 560;
+ AOT_Thread_allocate_object_parameterized_entry_point_offset = 600;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_parameterized_stub_offset = 368;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_slow_entry_point_offset = 568;
+ AOT_Thread_allocate_object_slow_entry_point_offset = 608;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1664;
+ 1712;
static constexpr dart::compiler::target::word
- AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
+ AOT_Thread_async_exception_handler_stub_offset = 384;
+static constexpr dart::compiler::target::word
+ AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 704;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
216;
static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208;
static constexpr dart::compiler::target::word
- AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648;
+ AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 688;
static constexpr dart::compiler::target::word
- AOT_Thread_call_to_runtime_entry_point_offset = 528;
+ AOT_Thread_call_to_runtime_entry_point_offset = 568;
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 256;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1704;
+ 1752;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 1672;
+ AOT_Thread_double_truncate_round_supported_offset = 1720;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 1712;
+ AOT_Thread_service_extension_stream_offset = 1760;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
- 608;
+ 648;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
- 432;
+ 472;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_entry_offset = 616;
+ AOT_Thread_deoptimize_entry_offset = 656;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_stub_offset = 440;
+ AOT_Thread_deoptimize_stub_offset = 480;
static constexpr dart::compiler::target::word
- AOT_Thread_double_abs_address_offset = 696;
+ AOT_Thread_double_abs_address_offset = 736;
static constexpr dart::compiler::target::word
- AOT_Thread_double_negate_address_offset = 688;
+ AOT_Thread_double_negate_address_offset = 728;
static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104;
static constexpr dart::compiler::target::word
- AOT_Thread_enter_safepoint_stub_offset = 480;
+ AOT_Thread_enter_safepoint_stub_offset = 520;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1624;
+ AOT_Thread_execution_state_offset = 1672;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_stub_offset = 488;
+ AOT_Thread_exit_safepoint_stub_offset = 528;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 496;
+ AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 536;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_stub_offset = 504;
+ AOT_Thread_call_native_through_safepoint_stub_offset = 544;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_entry_point_offset = 624;
+ AOT_Thread_call_native_through_safepoint_entry_point_offset = 664;
static constexpr dart::compiler::target::word
AOT_Thread_fix_allocation_stub_code_offset = 240;
static constexpr dart::compiler::target::word
AOT_Thread_fix_callers_target_code_offset = 232;
static constexpr dart::compiler::target::word
- AOT_Thread_float_absolute_address_offset = 720;
+ AOT_Thread_float_absolute_address_offset = 760;
static constexpr dart::compiler::target::word
- AOT_Thread_float_negate_address_offset = 712;
+ AOT_Thread_float_negate_address_offset = 752;
static constexpr dart::compiler::target::word
- AOT_Thread_float_not_address_offset = 704;
+ AOT_Thread_float_not_address_offset = 744;
static constexpr dart::compiler::target::word
- AOT_Thread_float_zerow_address_offset = 728;
+ AOT_Thread_float_zerow_address_offset = 768;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1600;
+ AOT_Thread_global_object_pool_offset = 1648;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1656;
+ AOT_Thread_exit_through_ffi_offset = 1704;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 1720;
+ 1768;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 128;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_return_stub_offset = 448;
+ AOT_Thread_lazy_deopt_from_return_stub_offset = 488;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_throw_stub_offset = 456;
+ AOT_Thread_lazy_deopt_from_throw_stub_offset = 496;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_specialize_type_test_stub_offset = 472;
+ AOT_Thread_lazy_specialize_type_test_stub_offset = 512;
static constexpr dart::compiler::target::word
AOT_Thread_marking_stack_block_offset = 160;
static constexpr dart::compiler::target::word
- AOT_Thread_megamorphic_call_checked_entry_offset = 592;
+ AOT_Thread_megamorphic_call_checked_entry_offset = 632;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_entry_offset = 600;
+ AOT_Thread_switchable_call_miss_entry_offset = 640;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_stub_offset = 400;
+ AOT_Thread_switchable_call_miss_stub_offset = 440;
static constexpr dart::compiler::target::word
- AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656;
+ AOT_Thread_no_scope_native_wrapper_entry_point_offset = 696;
static constexpr dart::compiler::target::word
AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 272;
static constexpr dart::compiler::target::word
@@ -11043,20 +11589,28 @@
AOT_Thread_range_error_shared_with_fpu_regs_stub_offset = 336;
static constexpr dart::compiler::target::word
AOT_Thread_range_error_shared_without_fpu_regs_stub_offset = 328;
+static constexpr dart::compiler::target::word AOT_Thread_resume_stub_offset =
+ 392;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_not_future_stub_offset = 408;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_star_stub_offset = 416;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_stub_offset = 400;
static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
200;
static constexpr dart::compiler::target::word
- AOT_Thread_predefined_symbols_address_offset = 672;
+ AOT_Thread_predefined_symbols_address_offset = 712;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1608;
+ 1656;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1616;
+ AOT_Thread_saved_shadow_call_stack_offset = 1664;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1632;
+ AOT_Thread_safepoint_state_offset = 1680;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_stub_offset = 464;
+ AOT_Thread_slow_type_test_stub_offset = 504;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_entry_point_offset = 640;
+ AOT_Thread_slow_type_test_entry_point_offset = 680;
static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
56;
static constexpr dart::compiler::target::word
@@ -11064,31 +11618,31 @@
static constexpr dart::compiler::target::word
AOT_Thread_stack_overflow_flags_offset = 120;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 584;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 624;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 392;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 432;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 576;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 616;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 384;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 424;
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 152;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_entry_point_offset = 1528;
+ AOT_Thread_suspend_state_await_entry_point_offset = 1576;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_entry_point_offset = 1520;
+ AOT_Thread_suspend_state_init_async_entry_point_offset = 1568;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_entry_point_offset = 1536;
+ AOT_Thread_suspend_state_return_async_entry_point_offset = 1584;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
+ AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1592;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1600;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1608;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1616;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1576;
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1624;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -11100,20 +11654,20 @@
AOT_Thread_unboxed_double_runtime_arg_offset = 192;
static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 176;
static constexpr dart::compiler::target::word
- AOT_Thread_write_barrier_entry_point_offset = 512;
+ AOT_Thread_write_barrier_entry_point_offset = 552;
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_mask_offset = 64;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1640;
-static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 1648;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1680;
-static constexpr dart::compiler::target::word
- AOT_Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
1688;
static constexpr dart::compiler::target::word
+ AOT_Thread_callback_stack_return_offset = 1696;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1728;
+static constexpr dart::compiler::target::word
+ AOT_Thread_jump_to_frame_entry_point_offset = 672;
+static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
+ 1736;
+static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_buffer_offset = 8;
@@ -11226,8 +11780,8 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_wrappers_thread_offset[] = {
- 1432, 1440, 1448, 1456, -1, -1, 1464, 1472,
- 1480, 1488, 1496, -1, 1504, 1512, -1, -1};
+ 1480, 1488, 1496, 1504, -1, -1, 1512, 1520,
+ 1528, 1536, 1544, -1, 1552, 1560, -1, -1};
static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
24;
static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -11471,9 +12025,8 @@
AOT_Closure_instantiator_type_arguments_offset = 8;
static constexpr dart::compiler::target::word
AOT_ClosureData_default_type_arguments_kind_offset = 32;
+static constexpr dart::compiler::target::word AOT_Code_instructions_offset = 48;
static constexpr dart::compiler::target::word AOT_Code_object_pool_offset = 40;
-static constexpr dart::compiler::target::word
- AOT_Code_saved_instructions_offset = 48;
static constexpr dart::compiler::target::word AOT_Code_owner_offset = 56;
static constexpr dart::compiler::target::word AOT_Context_num_variables_offset =
8;
@@ -11527,6 +12080,8 @@
56;
static constexpr dart::compiler::target::word AOT_Isolate_finalizers_offset =
80;
+static constexpr dart::compiler::target::word
+ AOT_Isolate_has_resumption_breakpoints_offset = 89;
static constexpr dart::compiler::target::word AOT_Isolate_ic_miss_code_offset =
64;
static constexpr dart::compiler::target::word
@@ -11578,6 +12133,22 @@
AOT_ObjectStore_string_type_offset = 376;
static constexpr dart::compiler::target::word AOT_ObjectStore_type_type_offset =
224;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_await_offset = 1008;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_handle_exception_offset = 1056;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_offset = 1000;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_star_offset = 1032;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_offset = 1016;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_not_future_offset = 1024;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_star_offset = 1048;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_yield_async_star_offset = 1040;
static constexpr dart::compiler::target::word AOT_OneByteString_data_offset =
16;
static constexpr dart::compiler::target::word AOT_PointerBase_data_offset = 8;
@@ -11601,6 +12172,8 @@
static constexpr dart::compiler::target::word
AOT_SubtypeTestCache_cache_offset = 8;
static constexpr dart::compiler::target::word
+ AOT_SuspendState_FrameSizeGrowthGap = 0;
+static constexpr dart::compiler::target::word
AOT_SuspendState_error_callback_offset = 40;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 8;
@@ -11612,118 +12185,120 @@
static constexpr dart::compiler::target::word
AOT_SuspendState_then_callback_offset = 32;
static constexpr dart::compiler::target::word
- AOT_Thread_AllocateArray_entry_point_offset = 736;
+ AOT_Thread_AllocateArray_entry_point_offset = 776;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1648;
+ AOT_Thread_active_exception_offset = 1696;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1656;
+ AOT_Thread_active_stacktrace_offset = 1704;
static constexpr dart::compiler::target::word
- AOT_Thread_array_write_barrier_entry_point_offset = 520;
+ AOT_Thread_array_write_barrier_entry_point_offset = 560;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 536;
+ AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 576;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_with_fpu_regs_stub_offset = 344;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 544;
+ AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 584;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_without_fpu_regs_stub_offset = 352;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_entry_point_offset = 552;
+ AOT_Thread_allocate_object_entry_point_offset = 592;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_stub_offset = 360;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_parameterized_entry_point_offset = 560;
+ AOT_Thread_allocate_object_parameterized_entry_point_offset = 600;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_parameterized_stub_offset = 368;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_slow_entry_point_offset = 568;
+ AOT_Thread_allocate_object_slow_entry_point_offset = 608;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1728;
+ 1776;
static constexpr dart::compiler::target::word
- AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
+ AOT_Thread_async_exception_handler_stub_offset = 384;
+static constexpr dart::compiler::target::word
+ AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 704;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
216;
static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208;
static constexpr dart::compiler::target::word
- AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648;
+ AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 688;
static constexpr dart::compiler::target::word
- AOT_Thread_call_to_runtime_entry_point_offset = 528;
+ AOT_Thread_call_to_runtime_entry_point_offset = 568;
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 256;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1768;
+ 1816;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 1736;
+ AOT_Thread_double_truncate_round_supported_offset = 1784;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 1776;
+ AOT_Thread_service_extension_stream_offset = 1824;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
- 608;
+ 648;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
- 432;
+ 472;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_entry_offset = 616;
+ AOT_Thread_deoptimize_entry_offset = 656;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_stub_offset = 440;
+ AOT_Thread_deoptimize_stub_offset = 480;
static constexpr dart::compiler::target::word
- AOT_Thread_double_abs_address_offset = 696;
+ AOT_Thread_double_abs_address_offset = 736;
static constexpr dart::compiler::target::word
- AOT_Thread_double_negate_address_offset = 688;
+ AOT_Thread_double_negate_address_offset = 728;
static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104;
static constexpr dart::compiler::target::word
- AOT_Thread_enter_safepoint_stub_offset = 480;
+ AOT_Thread_enter_safepoint_stub_offset = 520;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1688;
+ AOT_Thread_execution_state_offset = 1736;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_stub_offset = 488;
+ AOT_Thread_exit_safepoint_stub_offset = 528;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 496;
+ AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 536;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_stub_offset = 504;
+ AOT_Thread_call_native_through_safepoint_stub_offset = 544;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_entry_point_offset = 624;
+ AOT_Thread_call_native_through_safepoint_entry_point_offset = 664;
static constexpr dart::compiler::target::word
AOT_Thread_fix_allocation_stub_code_offset = 240;
static constexpr dart::compiler::target::word
AOT_Thread_fix_callers_target_code_offset = 232;
static constexpr dart::compiler::target::word
- AOT_Thread_float_absolute_address_offset = 720;
+ AOT_Thread_float_absolute_address_offset = 760;
static constexpr dart::compiler::target::word
- AOT_Thread_float_negate_address_offset = 712;
+ AOT_Thread_float_negate_address_offset = 752;
static constexpr dart::compiler::target::word
- AOT_Thread_float_not_address_offset = 704;
+ AOT_Thread_float_not_address_offset = 744;
static constexpr dart::compiler::target::word
- AOT_Thread_float_zerow_address_offset = 728;
+ AOT_Thread_float_zerow_address_offset = 768;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1664;
+ AOT_Thread_global_object_pool_offset = 1712;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1720;
+ AOT_Thread_exit_through_ffi_offset = 1768;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 1784;
+ 1832;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 128;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_return_stub_offset = 448;
+ AOT_Thread_lazy_deopt_from_return_stub_offset = 488;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_throw_stub_offset = 456;
+ AOT_Thread_lazy_deopt_from_throw_stub_offset = 496;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_specialize_type_test_stub_offset = 472;
+ AOT_Thread_lazy_specialize_type_test_stub_offset = 512;
static constexpr dart::compiler::target::word
AOT_Thread_marking_stack_block_offset = 160;
static constexpr dart::compiler::target::word
- AOT_Thread_megamorphic_call_checked_entry_offset = 592;
+ AOT_Thread_megamorphic_call_checked_entry_offset = 632;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_entry_offset = 600;
+ AOT_Thread_switchable_call_miss_entry_offset = 640;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_stub_offset = 400;
+ AOT_Thread_switchable_call_miss_stub_offset = 440;
static constexpr dart::compiler::target::word
- AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656;
+ AOT_Thread_no_scope_native_wrapper_entry_point_offset = 696;
static constexpr dart::compiler::target::word
AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 272;
static constexpr dart::compiler::target::word
@@ -11745,20 +12320,28 @@
AOT_Thread_range_error_shared_with_fpu_regs_stub_offset = 336;
static constexpr dart::compiler::target::word
AOT_Thread_range_error_shared_without_fpu_regs_stub_offset = 328;
+static constexpr dart::compiler::target::word AOT_Thread_resume_stub_offset =
+ 392;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_not_future_stub_offset = 408;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_star_stub_offset = 416;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_stub_offset = 400;
static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
200;
static constexpr dart::compiler::target::word
- AOT_Thread_predefined_symbols_address_offset = 672;
+ AOT_Thread_predefined_symbols_address_offset = 712;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1672;
+ 1720;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1680;
+ AOT_Thread_saved_shadow_call_stack_offset = 1728;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1696;
+ AOT_Thread_safepoint_state_offset = 1744;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_stub_offset = 464;
+ AOT_Thread_slow_type_test_stub_offset = 504;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_entry_point_offset = 640;
+ AOT_Thread_slow_type_test_entry_point_offset = 680;
static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
56;
static constexpr dart::compiler::target::word
@@ -11766,31 +12349,31 @@
static constexpr dart::compiler::target::word
AOT_Thread_stack_overflow_flags_offset = 120;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 584;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 624;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 392;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 432;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 576;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 616;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 384;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 424;
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 152;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_entry_point_offset = 1592;
+ AOT_Thread_suspend_state_await_entry_point_offset = 1640;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_entry_point_offset = 1584;
+ AOT_Thread_suspend_state_init_async_entry_point_offset = 1632;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_entry_point_offset = 1600;
+ AOT_Thread_suspend_state_return_async_entry_point_offset = 1648;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
+ AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1656;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1664;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1672;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1680;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1640;
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1688;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -11802,20 +12385,20 @@
AOT_Thread_unboxed_double_runtime_arg_offset = 192;
static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 176;
static constexpr dart::compiler::target::word
- AOT_Thread_write_barrier_entry_point_offset = 512;
+ AOT_Thread_write_barrier_entry_point_offset = 552;
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_mask_offset = 64;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1704;
-static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 1712;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1744;
-static constexpr dart::compiler::target::word
- AOT_Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
1752;
static constexpr dart::compiler::target::word
+ AOT_Thread_callback_stack_return_offset = 1760;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1792;
+static constexpr dart::compiler::target::word
+ AOT_Thread_jump_to_frame_entry_point_offset = 672;
+static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
+ 1800;
+static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_buffer_offset = 8;
@@ -11928,9 +12511,9 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_wrappers_thread_offset[] = {
- 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496, 1504, 1512,
- 1520, 1528, 1536, 1544, -1, -1, -1, -1, 1552, 1560, -1,
- -1, 1568, 1576, 1584, -1, -1, -1, -1, -1, -1};
+ 1480, 1488, 1496, 1504, 1512, 1520, 1528, 1536, 1544, 1552, 1560,
+ 1568, 1576, 1584, 1592, -1, -1, -1, -1, 1600, 1608, -1,
+ -1, 1616, 1624, 1632, -1, -1, -1, -1, -1, -1};
static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
24;
static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -12170,9 +12753,8 @@
AOT_Closure_instantiator_type_arguments_offset = 8;
static constexpr dart::compiler::target::word
AOT_ClosureData_default_type_arguments_kind_offset = 20;
+static constexpr dart::compiler::target::word AOT_Code_instructions_offset = 48;
static constexpr dart::compiler::target::word AOT_Code_object_pool_offset = 40;
-static constexpr dart::compiler::target::word
- AOT_Code_saved_instructions_offset = 48;
static constexpr dart::compiler::target::word AOT_Code_owner_offset = 56;
static constexpr dart::compiler::target::word AOT_Context_num_variables_offset =
8;
@@ -12226,6 +12808,8 @@
56;
static constexpr dart::compiler::target::word AOT_Isolate_finalizers_offset =
80;
+static constexpr dart::compiler::target::word
+ AOT_Isolate_has_resumption_breakpoints_offset = 89;
static constexpr dart::compiler::target::word AOT_Isolate_ic_miss_code_offset =
64;
static constexpr dart::compiler::target::word
@@ -12277,6 +12861,22 @@
AOT_ObjectStore_string_type_offset = 376;
static constexpr dart::compiler::target::word AOT_ObjectStore_type_type_offset =
224;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_await_offset = 1008;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_handle_exception_offset = 1056;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_offset = 1000;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_star_offset = 1032;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_offset = 1016;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_not_future_offset = 1024;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_star_offset = 1048;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_yield_async_star_offset = 1040;
static constexpr dart::compiler::target::word AOT_OneByteString_data_offset =
16;
static constexpr dart::compiler::target::word AOT_PointerBase_data_offset = 8;
@@ -12300,6 +12900,8 @@
static constexpr dart::compiler::target::word
AOT_SubtypeTestCache_cache_offset = 8;
static constexpr dart::compiler::target::word
+ AOT_SuspendState_FrameSizeGrowthGap = 0;
+static constexpr dart::compiler::target::word
AOT_SuspendState_error_callback_offset = 32;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 8;
@@ -12311,118 +12913,120 @@
static constexpr dart::compiler::target::word
AOT_SuspendState_then_callback_offset = 28;
static constexpr dart::compiler::target::word
- AOT_Thread_AllocateArray_entry_point_offset = 736;
+ AOT_Thread_AllocateArray_entry_point_offset = 776;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1584;
+ AOT_Thread_active_exception_offset = 1632;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1592;
+ AOT_Thread_active_stacktrace_offset = 1640;
static constexpr dart::compiler::target::word
- AOT_Thread_array_write_barrier_entry_point_offset = 520;
+ AOT_Thread_array_write_barrier_entry_point_offset = 560;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 536;
+ AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 576;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_with_fpu_regs_stub_offset = 344;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 544;
+ AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 584;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_without_fpu_regs_stub_offset = 352;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_entry_point_offset = 552;
+ AOT_Thread_allocate_object_entry_point_offset = 592;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_stub_offset = 360;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_parameterized_entry_point_offset = 560;
+ AOT_Thread_allocate_object_parameterized_entry_point_offset = 600;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_parameterized_stub_offset = 368;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_slow_entry_point_offset = 568;
+ AOT_Thread_allocate_object_slow_entry_point_offset = 608;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1664;
+ 1712;
static constexpr dart::compiler::target::word
- AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
+ AOT_Thread_async_exception_handler_stub_offset = 384;
+static constexpr dart::compiler::target::word
+ AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 704;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
216;
static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208;
static constexpr dart::compiler::target::word
- AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648;
+ AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 688;
static constexpr dart::compiler::target::word
- AOT_Thread_call_to_runtime_entry_point_offset = 528;
+ AOT_Thread_call_to_runtime_entry_point_offset = 568;
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 256;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1704;
+ 1752;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 1672;
+ AOT_Thread_double_truncate_round_supported_offset = 1720;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 1712;
+ AOT_Thread_service_extension_stream_offset = 1760;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
- 608;
+ 648;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
- 432;
+ 472;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_entry_offset = 616;
+ AOT_Thread_deoptimize_entry_offset = 656;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_stub_offset = 440;
+ AOT_Thread_deoptimize_stub_offset = 480;
static constexpr dart::compiler::target::word
- AOT_Thread_double_abs_address_offset = 696;
+ AOT_Thread_double_abs_address_offset = 736;
static constexpr dart::compiler::target::word
- AOT_Thread_double_negate_address_offset = 688;
+ AOT_Thread_double_negate_address_offset = 728;
static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104;
static constexpr dart::compiler::target::word
- AOT_Thread_enter_safepoint_stub_offset = 480;
+ AOT_Thread_enter_safepoint_stub_offset = 520;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1624;
+ AOT_Thread_execution_state_offset = 1672;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_stub_offset = 488;
+ AOT_Thread_exit_safepoint_stub_offset = 528;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 496;
+ AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 536;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_stub_offset = 504;
+ AOT_Thread_call_native_through_safepoint_stub_offset = 544;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_entry_point_offset = 624;
+ AOT_Thread_call_native_through_safepoint_entry_point_offset = 664;
static constexpr dart::compiler::target::word
AOT_Thread_fix_allocation_stub_code_offset = 240;
static constexpr dart::compiler::target::word
AOT_Thread_fix_callers_target_code_offset = 232;
static constexpr dart::compiler::target::word
- AOT_Thread_float_absolute_address_offset = 720;
+ AOT_Thread_float_absolute_address_offset = 760;
static constexpr dart::compiler::target::word
- AOT_Thread_float_negate_address_offset = 712;
+ AOT_Thread_float_negate_address_offset = 752;
static constexpr dart::compiler::target::word
- AOT_Thread_float_not_address_offset = 704;
+ AOT_Thread_float_not_address_offset = 744;
static constexpr dart::compiler::target::word
- AOT_Thread_float_zerow_address_offset = 728;
+ AOT_Thread_float_zerow_address_offset = 768;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1600;
+ AOT_Thread_global_object_pool_offset = 1648;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1656;
+ AOT_Thread_exit_through_ffi_offset = 1704;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 1720;
+ 1768;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 128;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_return_stub_offset = 448;
+ AOT_Thread_lazy_deopt_from_return_stub_offset = 488;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_throw_stub_offset = 456;
+ AOT_Thread_lazy_deopt_from_throw_stub_offset = 496;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_specialize_type_test_stub_offset = 472;
+ AOT_Thread_lazy_specialize_type_test_stub_offset = 512;
static constexpr dart::compiler::target::word
AOT_Thread_marking_stack_block_offset = 160;
static constexpr dart::compiler::target::word
- AOT_Thread_megamorphic_call_checked_entry_offset = 592;
+ AOT_Thread_megamorphic_call_checked_entry_offset = 632;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_entry_offset = 600;
+ AOT_Thread_switchable_call_miss_entry_offset = 640;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_stub_offset = 400;
+ AOT_Thread_switchable_call_miss_stub_offset = 440;
static constexpr dart::compiler::target::word
- AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656;
+ AOT_Thread_no_scope_native_wrapper_entry_point_offset = 696;
static constexpr dart::compiler::target::word
AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 272;
static constexpr dart::compiler::target::word
@@ -12444,20 +13048,28 @@
AOT_Thread_range_error_shared_with_fpu_regs_stub_offset = 336;
static constexpr dart::compiler::target::word
AOT_Thread_range_error_shared_without_fpu_regs_stub_offset = 328;
+static constexpr dart::compiler::target::word AOT_Thread_resume_stub_offset =
+ 392;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_not_future_stub_offset = 408;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_star_stub_offset = 416;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_stub_offset = 400;
static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
200;
static constexpr dart::compiler::target::word
- AOT_Thread_predefined_symbols_address_offset = 672;
+ AOT_Thread_predefined_symbols_address_offset = 712;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1608;
+ 1656;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1616;
+ AOT_Thread_saved_shadow_call_stack_offset = 1664;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1632;
+ AOT_Thread_safepoint_state_offset = 1680;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_stub_offset = 464;
+ AOT_Thread_slow_type_test_stub_offset = 504;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_entry_point_offset = 640;
+ AOT_Thread_slow_type_test_entry_point_offset = 680;
static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
56;
static constexpr dart::compiler::target::word
@@ -12465,31 +13077,31 @@
static constexpr dart::compiler::target::word
AOT_Thread_stack_overflow_flags_offset = 120;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 584;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 624;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 392;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 432;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 576;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 616;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 384;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 424;
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 152;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_entry_point_offset = 1528;
+ AOT_Thread_suspend_state_await_entry_point_offset = 1576;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_entry_point_offset = 1520;
+ AOT_Thread_suspend_state_init_async_entry_point_offset = 1568;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_entry_point_offset = 1536;
+ AOT_Thread_suspend_state_return_async_entry_point_offset = 1584;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
+ AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1592;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1600;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1608;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1616;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1576;
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1624;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -12501,20 +13113,20 @@
AOT_Thread_unboxed_double_runtime_arg_offset = 192;
static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 176;
static constexpr dart::compiler::target::word
- AOT_Thread_write_barrier_entry_point_offset = 512;
+ AOT_Thread_write_barrier_entry_point_offset = 552;
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_mask_offset = 64;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1640;
-static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 1648;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1680;
-static constexpr dart::compiler::target::word
- AOT_Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
1688;
static constexpr dart::compiler::target::word
+ AOT_Thread_callback_stack_return_offset = 1696;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1728;
+static constexpr dart::compiler::target::word
+ AOT_Thread_jump_to_frame_entry_point_offset = 672;
+static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
+ 1736;
+static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_buffer_offset = 8;
@@ -12627,8 +13239,8 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_wrappers_thread_offset[] = {
- 1432, 1440, 1448, 1456, -1, -1, 1464, 1472,
- 1480, 1488, 1496, -1, 1504, 1512, -1, -1};
+ 1480, 1488, 1496, 1504, -1, -1, 1512, 1520,
+ 1528, 1536, 1544, -1, 1552, 1560, -1, -1};
static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
24;
static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -12868,9 +13480,8 @@
AOT_Closure_instantiator_type_arguments_offset = 8;
static constexpr dart::compiler::target::word
AOT_ClosureData_default_type_arguments_kind_offset = 20;
+static constexpr dart::compiler::target::word AOT_Code_instructions_offset = 48;
static constexpr dart::compiler::target::word AOT_Code_object_pool_offset = 40;
-static constexpr dart::compiler::target::word
- AOT_Code_saved_instructions_offset = 48;
static constexpr dart::compiler::target::word AOT_Code_owner_offset = 56;
static constexpr dart::compiler::target::word AOT_Context_num_variables_offset =
8;
@@ -12924,6 +13535,8 @@
56;
static constexpr dart::compiler::target::word AOT_Isolate_finalizers_offset =
80;
+static constexpr dart::compiler::target::word
+ AOT_Isolate_has_resumption_breakpoints_offset = 89;
static constexpr dart::compiler::target::word AOT_Isolate_ic_miss_code_offset =
64;
static constexpr dart::compiler::target::word
@@ -12975,6 +13588,22 @@
AOT_ObjectStore_string_type_offset = 376;
static constexpr dart::compiler::target::word AOT_ObjectStore_type_type_offset =
224;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_await_offset = 1008;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_handle_exception_offset = 1056;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_offset = 1000;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_star_offset = 1032;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_offset = 1016;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_not_future_offset = 1024;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_star_offset = 1048;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_yield_async_star_offset = 1040;
static constexpr dart::compiler::target::word AOT_OneByteString_data_offset =
16;
static constexpr dart::compiler::target::word AOT_PointerBase_data_offset = 8;
@@ -12998,6 +13627,8 @@
static constexpr dart::compiler::target::word
AOT_SubtypeTestCache_cache_offset = 8;
static constexpr dart::compiler::target::word
+ AOT_SuspendState_FrameSizeGrowthGap = 0;
+static constexpr dart::compiler::target::word
AOT_SuspendState_error_callback_offset = 32;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 8;
@@ -13009,118 +13640,120 @@
static constexpr dart::compiler::target::word
AOT_SuspendState_then_callback_offset = 28;
static constexpr dart::compiler::target::word
- AOT_Thread_AllocateArray_entry_point_offset = 736;
+ AOT_Thread_AllocateArray_entry_point_offset = 776;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1648;
+ AOT_Thread_active_exception_offset = 1696;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1656;
+ AOT_Thread_active_stacktrace_offset = 1704;
static constexpr dart::compiler::target::word
- AOT_Thread_array_write_barrier_entry_point_offset = 520;
+ AOT_Thread_array_write_barrier_entry_point_offset = 560;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 536;
+ AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 576;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_with_fpu_regs_stub_offset = 344;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 544;
+ AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 584;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_without_fpu_regs_stub_offset = 352;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_entry_point_offset = 552;
+ AOT_Thread_allocate_object_entry_point_offset = 592;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_stub_offset = 360;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_parameterized_entry_point_offset = 560;
+ AOT_Thread_allocate_object_parameterized_entry_point_offset = 600;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_parameterized_stub_offset = 368;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_slow_entry_point_offset = 568;
+ AOT_Thread_allocate_object_slow_entry_point_offset = 608;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1728;
+ 1776;
static constexpr dart::compiler::target::word
- AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
+ AOT_Thread_async_exception_handler_stub_offset = 384;
+static constexpr dart::compiler::target::word
+ AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 704;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
216;
static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208;
static constexpr dart::compiler::target::word
- AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648;
+ AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 688;
static constexpr dart::compiler::target::word
- AOT_Thread_call_to_runtime_entry_point_offset = 528;
+ AOT_Thread_call_to_runtime_entry_point_offset = 568;
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 256;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1768;
+ 1816;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 1736;
+ AOT_Thread_double_truncate_round_supported_offset = 1784;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 1776;
+ AOT_Thread_service_extension_stream_offset = 1824;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
- 608;
+ 648;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
- 432;
+ 472;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_entry_offset = 616;
+ AOT_Thread_deoptimize_entry_offset = 656;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_stub_offset = 440;
+ AOT_Thread_deoptimize_stub_offset = 480;
static constexpr dart::compiler::target::word
- AOT_Thread_double_abs_address_offset = 696;
+ AOT_Thread_double_abs_address_offset = 736;
static constexpr dart::compiler::target::word
- AOT_Thread_double_negate_address_offset = 688;
+ AOT_Thread_double_negate_address_offset = 728;
static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104;
static constexpr dart::compiler::target::word
- AOT_Thread_enter_safepoint_stub_offset = 480;
+ AOT_Thread_enter_safepoint_stub_offset = 520;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1688;
+ AOT_Thread_execution_state_offset = 1736;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_stub_offset = 488;
+ AOT_Thread_exit_safepoint_stub_offset = 528;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 496;
+ AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 536;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_stub_offset = 504;
+ AOT_Thread_call_native_through_safepoint_stub_offset = 544;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_entry_point_offset = 624;
+ AOT_Thread_call_native_through_safepoint_entry_point_offset = 664;
static constexpr dart::compiler::target::word
AOT_Thread_fix_allocation_stub_code_offset = 240;
static constexpr dart::compiler::target::word
AOT_Thread_fix_callers_target_code_offset = 232;
static constexpr dart::compiler::target::word
- AOT_Thread_float_absolute_address_offset = 720;
+ AOT_Thread_float_absolute_address_offset = 760;
static constexpr dart::compiler::target::word
- AOT_Thread_float_negate_address_offset = 712;
+ AOT_Thread_float_negate_address_offset = 752;
static constexpr dart::compiler::target::word
- AOT_Thread_float_not_address_offset = 704;
+ AOT_Thread_float_not_address_offset = 744;
static constexpr dart::compiler::target::word
- AOT_Thread_float_zerow_address_offset = 728;
+ AOT_Thread_float_zerow_address_offset = 768;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1664;
+ AOT_Thread_global_object_pool_offset = 1712;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1720;
+ AOT_Thread_exit_through_ffi_offset = 1768;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 1784;
+ 1832;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 128;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_return_stub_offset = 448;
+ AOT_Thread_lazy_deopt_from_return_stub_offset = 488;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_throw_stub_offset = 456;
+ AOT_Thread_lazy_deopt_from_throw_stub_offset = 496;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_specialize_type_test_stub_offset = 472;
+ AOT_Thread_lazy_specialize_type_test_stub_offset = 512;
static constexpr dart::compiler::target::word
AOT_Thread_marking_stack_block_offset = 160;
static constexpr dart::compiler::target::word
- AOT_Thread_megamorphic_call_checked_entry_offset = 592;
+ AOT_Thread_megamorphic_call_checked_entry_offset = 632;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_entry_offset = 600;
+ AOT_Thread_switchable_call_miss_entry_offset = 640;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_stub_offset = 400;
+ AOT_Thread_switchable_call_miss_stub_offset = 440;
static constexpr dart::compiler::target::word
- AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656;
+ AOT_Thread_no_scope_native_wrapper_entry_point_offset = 696;
static constexpr dart::compiler::target::word
AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 272;
static constexpr dart::compiler::target::word
@@ -13142,20 +13775,28 @@
AOT_Thread_range_error_shared_with_fpu_regs_stub_offset = 336;
static constexpr dart::compiler::target::word
AOT_Thread_range_error_shared_without_fpu_regs_stub_offset = 328;
+static constexpr dart::compiler::target::word AOT_Thread_resume_stub_offset =
+ 392;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_not_future_stub_offset = 408;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_star_stub_offset = 416;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_stub_offset = 400;
static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
200;
static constexpr dart::compiler::target::word
- AOT_Thread_predefined_symbols_address_offset = 672;
+ AOT_Thread_predefined_symbols_address_offset = 712;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1672;
+ 1720;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1680;
+ AOT_Thread_saved_shadow_call_stack_offset = 1728;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1696;
+ AOT_Thread_safepoint_state_offset = 1744;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_stub_offset = 464;
+ AOT_Thread_slow_type_test_stub_offset = 504;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_entry_point_offset = 640;
+ AOT_Thread_slow_type_test_entry_point_offset = 680;
static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
56;
static constexpr dart::compiler::target::word
@@ -13163,31 +13804,31 @@
static constexpr dart::compiler::target::word
AOT_Thread_stack_overflow_flags_offset = 120;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 584;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 624;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 392;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 432;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 576;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 616;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 384;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 424;
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 152;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_entry_point_offset = 1592;
+ AOT_Thread_suspend_state_await_entry_point_offset = 1640;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_entry_point_offset = 1584;
+ AOT_Thread_suspend_state_init_async_entry_point_offset = 1632;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_entry_point_offset = 1600;
+ AOT_Thread_suspend_state_return_async_entry_point_offset = 1648;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
+ AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1656;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1664;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1672;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1680;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1640;
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1688;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -13199,20 +13840,20 @@
AOT_Thread_unboxed_double_runtime_arg_offset = 192;
static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 176;
static constexpr dart::compiler::target::word
- AOT_Thread_write_barrier_entry_point_offset = 512;
+ AOT_Thread_write_barrier_entry_point_offset = 552;
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_mask_offset = 64;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1704;
-static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 1712;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1744;
-static constexpr dart::compiler::target::word
- AOT_Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
1752;
static constexpr dart::compiler::target::word
+ AOT_Thread_callback_stack_return_offset = 1760;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1792;
+static constexpr dart::compiler::target::word
+ AOT_Thread_jump_to_frame_entry_point_offset = 672;
+static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
+ 1800;
+static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_buffer_offset = 8;
@@ -13325,9 +13966,9 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_wrappers_thread_offset[] = {
- 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496, 1504, 1512,
- 1520, 1528, 1536, 1544, -1, -1, -1, -1, 1552, 1560, -1,
- -1, 1568, 1576, 1584, -1, -1, -1, -1, -1, -1};
+ 1480, 1488, 1496, 1504, 1512, 1520, 1528, 1536, 1544, 1552, 1560,
+ 1568, 1576, 1584, 1592, -1, -1, -1, -1, 1600, 1608, -1,
+ -1, 1616, 1624, 1632, -1, -1, -1, -1, -1, -1};
static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
24;
static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -13567,9 +14208,8 @@
AOT_Closure_instantiator_type_arguments_offset = 4;
static constexpr dart::compiler::target::word
AOT_ClosureData_default_type_arguments_kind_offset = 16;
+static constexpr dart::compiler::target::word AOT_Code_instructions_offset = 24;
static constexpr dart::compiler::target::word AOT_Code_object_pool_offset = 20;
-static constexpr dart::compiler::target::word
- AOT_Code_saved_instructions_offset = 24;
static constexpr dart::compiler::target::word AOT_Code_owner_offset = 28;
static constexpr dart::compiler::target::word AOT_Context_num_variables_offset =
4;
@@ -13623,6 +14263,8 @@
28;
static constexpr dart::compiler::target::word AOT_Isolate_finalizers_offset =
40;
+static constexpr dart::compiler::target::word
+ AOT_Isolate_has_resumption_breakpoints_offset = 45;
static constexpr dart::compiler::target::word AOT_Isolate_ic_miss_code_offset =
32;
static constexpr dart::compiler::target::word
@@ -13674,6 +14316,22 @@
AOT_ObjectStore_string_type_offset = 188;
static constexpr dart::compiler::target::word AOT_ObjectStore_type_type_offset =
112;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_await_offset = 504;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_handle_exception_offset = 528;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_offset = 500;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_star_offset = 516;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_offset = 508;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_not_future_offset = 512;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_star_offset = 524;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_yield_async_star_offset = 520;
static constexpr dart::compiler::target::word AOT_OneByteString_data_offset =
12;
static constexpr dart::compiler::target::word AOT_PointerBase_data_offset = 4;
@@ -13697,6 +14355,8 @@
static constexpr dart::compiler::target::word
AOT_SubtypeTestCache_cache_offset = 4;
static constexpr dart::compiler::target::word
+ AOT_SuspendState_FrameSizeGrowthGap = 0;
+static constexpr dart::compiler::target::word
AOT_SuspendState_error_callback_offset = 20;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 4;
@@ -13708,118 +14368,120 @@
static constexpr dart::compiler::target::word
AOT_SuspendState_then_callback_offset = 16;
static constexpr dart::compiler::target::word
- AOT_Thread_AllocateArray_entry_point_offset = 380;
+ AOT_Thread_AllocateArray_entry_point_offset = 400;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 832;
+ AOT_Thread_active_exception_offset = 856;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 836;
+ AOT_Thread_active_stacktrace_offset = 860;
static constexpr dart::compiler::target::word
- AOT_Thread_array_write_barrier_entry_point_offset = 272;
+ AOT_Thread_array_write_barrier_entry_point_offset = 292;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 280;
+ AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 300;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_with_fpu_regs_stub_offset = 184;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 284;
+ AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 304;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_without_fpu_regs_stub_offset = 188;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_entry_point_offset = 288;
+ AOT_Thread_allocate_object_entry_point_offset = 308;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_stub_offset = 192;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_parameterized_entry_point_offset = 292;
+ AOT_Thread_allocate_object_parameterized_entry_point_offset = 312;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_parameterized_stub_offset = 196;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_slow_entry_point_offset = 296;
+ AOT_Thread_allocate_object_slow_entry_point_offset = 316;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 200;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 872;
+ 896;
static constexpr dart::compiler::target::word
- AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 344;
+ AOT_Thread_async_exception_handler_stub_offset = 204;
+static constexpr dart::compiler::target::word
+ AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 364;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
120;
static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 116;
static constexpr dart::compiler::target::word
- AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 336;
+ AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 356;
static constexpr dart::compiler::target::word
- AOT_Thread_call_to_runtime_entry_point_offset = 276;
+ AOT_Thread_call_to_runtime_entry_point_offset = 296;
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 140;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 896;
+ 920;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 44;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 876;
+ AOT_Thread_double_truncate_round_supported_offset = 900;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 900;
+ AOT_Thread_service_extension_stream_offset = 924;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
- 316;
+ 336;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
- 228;
+ 248;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_entry_offset = 320;
+ AOT_Thread_deoptimize_entry_offset = 340;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_stub_offset = 232;
+ AOT_Thread_deoptimize_stub_offset = 252;
static constexpr dart::compiler::target::word
- AOT_Thread_double_abs_address_offset = 360;
+ AOT_Thread_double_abs_address_offset = 380;
static constexpr dart::compiler::target::word
- AOT_Thread_double_negate_address_offset = 356;
+ AOT_Thread_double_negate_address_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_end_offset = 52;
static constexpr dart::compiler::target::word
- AOT_Thread_enter_safepoint_stub_offset = 252;
+ AOT_Thread_enter_safepoint_stub_offset = 272;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 852;
+ AOT_Thread_execution_state_offset = 876;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_stub_offset = 256;
+ AOT_Thread_exit_safepoint_stub_offset = 276;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 260;
+ AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 280;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_stub_offset = 264;
+ AOT_Thread_call_native_through_safepoint_stub_offset = 284;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_entry_point_offset = 324;
+ AOT_Thread_call_native_through_safepoint_entry_point_offset = 344;
static constexpr dart::compiler::target::word
AOT_Thread_fix_allocation_stub_code_offset = 132;
static constexpr dart::compiler::target::word
AOT_Thread_fix_callers_target_code_offset = 128;
static constexpr dart::compiler::target::word
- AOT_Thread_float_absolute_address_offset = 372;
+ AOT_Thread_float_absolute_address_offset = 392;
static constexpr dart::compiler::target::word
- AOT_Thread_float_negate_address_offset = 368;
+ AOT_Thread_float_negate_address_offset = 388;
static constexpr dart::compiler::target::word
- AOT_Thread_float_not_address_offset = 364;
+ AOT_Thread_float_not_address_offset = 384;
static constexpr dart::compiler::target::word
- AOT_Thread_float_zerow_address_offset = 376;
+ AOT_Thread_float_zerow_address_offset = 396;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 840;
+ AOT_Thread_global_object_pool_offset = 864;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 136;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 868;
+ AOT_Thread_exit_through_ffi_offset = 892;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 904;
+ 928;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 64;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_return_stub_offset = 236;
+ AOT_Thread_lazy_deopt_from_return_stub_offset = 256;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_throw_stub_offset = 240;
+ AOT_Thread_lazy_deopt_from_throw_stub_offset = 260;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_specialize_type_test_stub_offset = 248;
+ AOT_Thread_lazy_specialize_type_test_stub_offset = 268;
static constexpr dart::compiler::target::word
AOT_Thread_marking_stack_block_offset = 80;
static constexpr dart::compiler::target::word
- AOT_Thread_megamorphic_call_checked_entry_offset = 308;
+ AOT_Thread_megamorphic_call_checked_entry_offset = 328;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_entry_offset = 312;
+ AOT_Thread_switchable_call_miss_entry_offset = 332;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_stub_offset = 212;
+ AOT_Thread_switchable_call_miss_stub_offset = 232;
static constexpr dart::compiler::target::word
- AOT_Thread_no_scope_native_wrapper_entry_point_offset = 340;
+ AOT_Thread_no_scope_native_wrapper_entry_point_offset = 360;
static constexpr dart::compiler::target::word
AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 148;
static constexpr dart::compiler::target::word
@@ -13841,19 +14503,27 @@
AOT_Thread_range_error_shared_with_fpu_regs_stub_offset = 180;
static constexpr dart::compiler::target::word
AOT_Thread_range_error_shared_without_fpu_regs_stub_offset = 176;
+static constexpr dart::compiler::target::word AOT_Thread_resume_stub_offset =
+ 208;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_not_future_stub_offset = 216;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_star_stub_offset = 220;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_stub_offset = 212;
static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
112;
static constexpr dart::compiler::target::word
- AOT_Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 844;
+ AOT_Thread_predefined_symbols_address_offset = 368;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 868;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 848;
+ AOT_Thread_saved_shadow_call_stack_offset = 872;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 856;
+ AOT_Thread_safepoint_state_offset = 880;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_stub_offset = 244;
+ AOT_Thread_slow_type_test_stub_offset = 264;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_entry_point_offset = 332;
+ AOT_Thread_slow_type_test_entry_point_offset = 352;
static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
28;
static constexpr dart::compiler::target::word
@@ -13861,31 +14531,31 @@
static constexpr dart::compiler::target::word
AOT_Thread_stack_overflow_flags_offset = 60;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 304;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 324;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 208;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 228;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 300;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 320;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 204;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 224;
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 76;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_entry_point_offset = 804;
+ AOT_Thread_suspend_state_await_entry_point_offset = 828;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_entry_point_offset = 800;
+ AOT_Thread_suspend_state_init_async_entry_point_offset = 824;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_entry_point_offset = 808;
+ AOT_Thread_suspend_state_return_async_entry_point_offset = 832;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 812;
+ AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 836;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_star_entry_point_offset = 816;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 840;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 820;
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 844;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_star_entry_point_offset = 824;
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 848;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 828;
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 852;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 48;
@@ -13897,19 +14567,19 @@
AOT_Thread_unboxed_double_runtime_arg_offset = 104;
static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_write_barrier_entry_point_offset = 268;
+ AOT_Thread_write_barrier_entry_point_offset = 288;
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_mask_offset = 32;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 36;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 860;
+ 884;
static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 864;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 880;
+ AOT_Thread_callback_stack_return_offset = 888;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 904;
static constexpr dart::compiler::target::word
- AOT_Thread_jump_to_frame_entry_point_offset = 328;
+ AOT_Thread_jump_to_frame_entry_point_offset = 348;
static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
- 888;
+ 912;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
@@ -14022,9 +14692,9 @@
4, 12, 8, 16};
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_wrappers_thread_offset[] = {
- -1, -1, -1, -1, -1, 728, 732, 736, -1, -1, 740,
- 744, 748, -1, -1, -1, 752, 756, 760, 764, 768, 772,
- 776, 780, -1, -1, -1, -1, 784, 788, 792, 796};
+ -1, -1, -1, -1, -1, 752, 756, 760, -1, -1, 764,
+ 768, 772, -1, -1, -1, 776, 780, 784, 788, 792, 796,
+ 800, 804, -1, -1, -1, -1, 808, 812, 816, 820};
static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
12;
static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 8;
@@ -14265,9 +14935,8 @@
AOT_Closure_instantiator_type_arguments_offset = 8;
static constexpr dart::compiler::target::word
AOT_ClosureData_default_type_arguments_kind_offset = 32;
+static constexpr dart::compiler::target::word AOT_Code_instructions_offset = 48;
static constexpr dart::compiler::target::word AOT_Code_object_pool_offset = 40;
-static constexpr dart::compiler::target::word
- AOT_Code_saved_instructions_offset = 48;
static constexpr dart::compiler::target::word AOT_Code_owner_offset = 56;
static constexpr dart::compiler::target::word AOT_Context_num_variables_offset =
8;
@@ -14321,6 +14990,8 @@
56;
static constexpr dart::compiler::target::word AOT_Isolate_finalizers_offset =
80;
+static constexpr dart::compiler::target::word
+ AOT_Isolate_has_resumption_breakpoints_offset = 89;
static constexpr dart::compiler::target::word AOT_Isolate_ic_miss_code_offset =
64;
static constexpr dart::compiler::target::word
@@ -14372,6 +15043,22 @@
AOT_ObjectStore_string_type_offset = 376;
static constexpr dart::compiler::target::word AOT_ObjectStore_type_type_offset =
224;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_await_offset = 1008;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_handle_exception_offset = 1056;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_offset = 1000;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_star_offset = 1032;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_offset = 1016;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_not_future_offset = 1024;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_star_offset = 1048;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_yield_async_star_offset = 1040;
static constexpr dart::compiler::target::word AOT_OneByteString_data_offset =
16;
static constexpr dart::compiler::target::word AOT_PointerBase_data_offset = 8;
@@ -14395,6 +15082,8 @@
static constexpr dart::compiler::target::word
AOT_SubtypeTestCache_cache_offset = 8;
static constexpr dart::compiler::target::word
+ AOT_SuspendState_FrameSizeGrowthGap = 0;
+static constexpr dart::compiler::target::word
AOT_SuspendState_error_callback_offset = 40;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 8;
@@ -14406,118 +15095,120 @@
static constexpr dart::compiler::target::word
AOT_SuspendState_then_callback_offset = 32;
static constexpr dart::compiler::target::word
- AOT_Thread_AllocateArray_entry_point_offset = 736;
+ AOT_Thread_AllocateArray_entry_point_offset = 776;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1640;
+ AOT_Thread_active_exception_offset = 1688;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1648;
+ AOT_Thread_active_stacktrace_offset = 1696;
static constexpr dart::compiler::target::word
- AOT_Thread_array_write_barrier_entry_point_offset = 520;
+ AOT_Thread_array_write_barrier_entry_point_offset = 560;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 536;
+ AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 576;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_with_fpu_regs_stub_offset = 344;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 544;
+ AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 584;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_without_fpu_regs_stub_offset = 352;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_entry_point_offset = 552;
+ AOT_Thread_allocate_object_entry_point_offset = 592;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_stub_offset = 360;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_parameterized_entry_point_offset = 560;
+ AOT_Thread_allocate_object_parameterized_entry_point_offset = 600;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_parameterized_stub_offset = 368;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_slow_entry_point_offset = 568;
+ AOT_Thread_allocate_object_slow_entry_point_offset = 608;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1720;
+ 1768;
static constexpr dart::compiler::target::word
- AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
+ AOT_Thread_async_exception_handler_stub_offset = 384;
+static constexpr dart::compiler::target::word
+ AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 704;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
216;
static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208;
static constexpr dart::compiler::target::word
- AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648;
+ AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 688;
static constexpr dart::compiler::target::word
- AOT_Thread_call_to_runtime_entry_point_offset = 528;
+ AOT_Thread_call_to_runtime_entry_point_offset = 568;
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 256;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1760;
+ 1808;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 1728;
+ AOT_Thread_double_truncate_round_supported_offset = 1776;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 1768;
+ AOT_Thread_service_extension_stream_offset = 1816;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
- 608;
+ 648;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
- 432;
+ 472;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_entry_offset = 616;
+ AOT_Thread_deoptimize_entry_offset = 656;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_stub_offset = 440;
+ AOT_Thread_deoptimize_stub_offset = 480;
static constexpr dart::compiler::target::word
- AOT_Thread_double_abs_address_offset = 696;
+ AOT_Thread_double_abs_address_offset = 736;
static constexpr dart::compiler::target::word
- AOT_Thread_double_negate_address_offset = 688;
+ AOT_Thread_double_negate_address_offset = 728;
static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104;
static constexpr dart::compiler::target::word
- AOT_Thread_enter_safepoint_stub_offset = 480;
+ AOT_Thread_enter_safepoint_stub_offset = 520;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1680;
+ AOT_Thread_execution_state_offset = 1728;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_stub_offset = 488;
+ AOT_Thread_exit_safepoint_stub_offset = 528;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 496;
+ AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 536;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_stub_offset = 504;
+ AOT_Thread_call_native_through_safepoint_stub_offset = 544;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_entry_point_offset = 624;
+ AOT_Thread_call_native_through_safepoint_entry_point_offset = 664;
static constexpr dart::compiler::target::word
AOT_Thread_fix_allocation_stub_code_offset = 240;
static constexpr dart::compiler::target::word
AOT_Thread_fix_callers_target_code_offset = 232;
static constexpr dart::compiler::target::word
- AOT_Thread_float_absolute_address_offset = 720;
+ AOT_Thread_float_absolute_address_offset = 760;
static constexpr dart::compiler::target::word
- AOT_Thread_float_negate_address_offset = 712;
+ AOT_Thread_float_negate_address_offset = 752;
static constexpr dart::compiler::target::word
- AOT_Thread_float_not_address_offset = 704;
+ AOT_Thread_float_not_address_offset = 744;
static constexpr dart::compiler::target::word
- AOT_Thread_float_zerow_address_offset = 728;
+ AOT_Thread_float_zerow_address_offset = 768;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1656;
+ AOT_Thread_global_object_pool_offset = 1704;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1712;
+ AOT_Thread_exit_through_ffi_offset = 1760;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 1776;
+ 1824;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 128;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_return_stub_offset = 448;
+ AOT_Thread_lazy_deopt_from_return_stub_offset = 488;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_throw_stub_offset = 456;
+ AOT_Thread_lazy_deopt_from_throw_stub_offset = 496;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_specialize_type_test_stub_offset = 472;
+ AOT_Thread_lazy_specialize_type_test_stub_offset = 512;
static constexpr dart::compiler::target::word
AOT_Thread_marking_stack_block_offset = 160;
static constexpr dart::compiler::target::word
- AOT_Thread_megamorphic_call_checked_entry_offset = 592;
+ AOT_Thread_megamorphic_call_checked_entry_offset = 632;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_entry_offset = 600;
+ AOT_Thread_switchable_call_miss_entry_offset = 640;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_stub_offset = 400;
+ AOT_Thread_switchable_call_miss_stub_offset = 440;
static constexpr dart::compiler::target::word
- AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656;
+ AOT_Thread_no_scope_native_wrapper_entry_point_offset = 696;
static constexpr dart::compiler::target::word
AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 272;
static constexpr dart::compiler::target::word
@@ -14539,20 +15230,28 @@
AOT_Thread_range_error_shared_with_fpu_regs_stub_offset = 336;
static constexpr dart::compiler::target::word
AOT_Thread_range_error_shared_without_fpu_regs_stub_offset = 328;
+static constexpr dart::compiler::target::word AOT_Thread_resume_stub_offset =
+ 392;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_not_future_stub_offset = 408;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_star_stub_offset = 416;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_stub_offset = 400;
static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
200;
static constexpr dart::compiler::target::word
- AOT_Thread_predefined_symbols_address_offset = 672;
+ AOT_Thread_predefined_symbols_address_offset = 712;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1664;
+ 1712;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1672;
+ AOT_Thread_saved_shadow_call_stack_offset = 1720;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1688;
+ AOT_Thread_safepoint_state_offset = 1736;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_stub_offset = 464;
+ AOT_Thread_slow_type_test_stub_offset = 504;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_entry_point_offset = 640;
+ AOT_Thread_slow_type_test_entry_point_offset = 680;
static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
56;
static constexpr dart::compiler::target::word
@@ -14560,31 +15259,31 @@
static constexpr dart::compiler::target::word
AOT_Thread_stack_overflow_flags_offset = 120;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 584;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 624;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 392;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 432;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 576;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 616;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 384;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 424;
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 152;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_entry_point_offset = 1584;
+ AOT_Thread_suspend_state_await_entry_point_offset = 1632;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_entry_point_offset = 1576;
+ AOT_Thread_suspend_state_init_async_entry_point_offset = 1624;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_entry_point_offset = 1592;
+ AOT_Thread_suspend_state_return_async_entry_point_offset = 1640;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1600;
+ AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1648;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1608;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1656;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1616;
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1664;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1624;
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1672;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1632;
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1680;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -14596,20 +15295,20 @@
AOT_Thread_unboxed_double_runtime_arg_offset = 192;
static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 176;
static constexpr dart::compiler::target::word
- AOT_Thread_write_barrier_entry_point_offset = 512;
+ AOT_Thread_write_barrier_entry_point_offset = 552;
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_mask_offset = 64;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1696;
-static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 1704;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1736;
-static constexpr dart::compiler::target::word
- AOT_Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
1744;
static constexpr dart::compiler::target::word
+ AOT_Thread_callback_stack_return_offset = 1752;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1784;
+static constexpr dart::compiler::target::word
+ AOT_Thread_jump_to_frame_entry_point_offset = 672;
+static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
+ 1792;
+static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_buffer_offset = 8;
@@ -14722,9 +15421,9 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_wrappers_thread_offset[] = {
- -1, -1, -1, -1, -1, 1432, 1440, 1448, -1, -1, 1456,
- 1464, 1472, -1, -1, -1, 1480, 1488, 1496, 1504, 1512, 1520,
- 1528, 1536, -1, -1, -1, -1, 1544, 1552, 1560, 1568};
+ -1, -1, -1, -1, -1, 1480, 1488, 1496, -1, -1, 1504,
+ 1512, 1520, -1, -1, -1, 1528, 1536, 1544, 1552, 1560, 1568,
+ 1576, 1584, -1, -1, -1, -1, 1592, 1600, 1608, 1616};
static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
24;
static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -14961,9 +15660,8 @@
AOT_Closure_instantiator_type_arguments_offset = 4;
static constexpr dart::compiler::target::word
AOT_ClosureData_default_type_arguments_kind_offset = 16;
+static constexpr dart::compiler::target::word AOT_Code_instructions_offset = 24;
static constexpr dart::compiler::target::word AOT_Code_object_pool_offset = 20;
-static constexpr dart::compiler::target::word
- AOT_Code_saved_instructions_offset = 24;
static constexpr dart::compiler::target::word AOT_Code_owner_offset = 28;
static constexpr dart::compiler::target::word AOT_Context_num_variables_offset =
4;
@@ -15066,6 +15764,22 @@
AOT_ObjectStore_string_type_offset = 188;
static constexpr dart::compiler::target::word AOT_ObjectStore_type_type_offset =
112;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_await_offset = 504;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_handle_exception_offset = 528;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_offset = 500;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_star_offset = 516;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_offset = 508;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_not_future_offset = 512;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_star_offset = 524;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_yield_async_star_offset = 520;
static constexpr dart::compiler::target::word AOT_OneByteString_data_offset =
12;
static constexpr dart::compiler::target::word AOT_PointerBase_data_offset = 4;
@@ -15089,6 +15803,8 @@
static constexpr dart::compiler::target::word
AOT_SubtypeTestCache_cache_offset = 4;
static constexpr dart::compiler::target::word
+ AOT_SuspendState_FrameSizeGrowthGap = 0;
+static constexpr dart::compiler::target::word
AOT_SuspendState_error_callback_offset = 20;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 4;
@@ -15100,118 +15816,120 @@
static constexpr dart::compiler::target::word
AOT_SuspendState_then_callback_offset = 16;
static constexpr dart::compiler::target::word
- AOT_Thread_AllocateArray_entry_point_offset = 380;
+ AOT_Thread_AllocateArray_entry_point_offset = 400;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 792;
+ AOT_Thread_active_exception_offset = 816;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 796;
+ AOT_Thread_active_stacktrace_offset = 820;
static constexpr dart::compiler::target::word
- AOT_Thread_array_write_barrier_entry_point_offset = 272;
+ AOT_Thread_array_write_barrier_entry_point_offset = 292;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 280;
+ AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 300;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_with_fpu_regs_stub_offset = 184;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 284;
+ AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 304;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_without_fpu_regs_stub_offset = 188;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_entry_point_offset = 288;
+ AOT_Thread_allocate_object_entry_point_offset = 308;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_stub_offset = 192;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_parameterized_entry_point_offset = 292;
+ AOT_Thread_allocate_object_parameterized_entry_point_offset = 312;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_parameterized_stub_offset = 196;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_slow_entry_point_offset = 296;
+ AOT_Thread_allocate_object_slow_entry_point_offset = 316;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 200;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 832;
+ 856;
static constexpr dart::compiler::target::word
- AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 344;
+ AOT_Thread_async_exception_handler_stub_offset = 204;
+static constexpr dart::compiler::target::word
+ AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 364;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
120;
static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 116;
static constexpr dart::compiler::target::word
- AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 336;
+ AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 356;
static constexpr dart::compiler::target::word
- AOT_Thread_call_to_runtime_entry_point_offset = 276;
+ AOT_Thread_call_to_runtime_entry_point_offset = 296;
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 140;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 856;
+ 880;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 44;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 836;
+ AOT_Thread_double_truncate_round_supported_offset = 860;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 860;
+ AOT_Thread_service_extension_stream_offset = 884;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
- 316;
+ 336;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
- 228;
+ 248;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_entry_offset = 320;
+ AOT_Thread_deoptimize_entry_offset = 340;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_stub_offset = 232;
+ AOT_Thread_deoptimize_stub_offset = 252;
static constexpr dart::compiler::target::word
- AOT_Thread_double_abs_address_offset = 360;
+ AOT_Thread_double_abs_address_offset = 380;
static constexpr dart::compiler::target::word
- AOT_Thread_double_negate_address_offset = 356;
+ AOT_Thread_double_negate_address_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_end_offset = 52;
static constexpr dart::compiler::target::word
- AOT_Thread_enter_safepoint_stub_offset = 252;
+ AOT_Thread_enter_safepoint_stub_offset = 272;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 812;
+ AOT_Thread_execution_state_offset = 836;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_stub_offset = 256;
+ AOT_Thread_exit_safepoint_stub_offset = 276;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 260;
+ AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 280;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_stub_offset = 264;
+ AOT_Thread_call_native_through_safepoint_stub_offset = 284;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_entry_point_offset = 324;
+ AOT_Thread_call_native_through_safepoint_entry_point_offset = 344;
static constexpr dart::compiler::target::word
AOT_Thread_fix_allocation_stub_code_offset = 132;
static constexpr dart::compiler::target::word
AOT_Thread_fix_callers_target_code_offset = 128;
static constexpr dart::compiler::target::word
- AOT_Thread_float_absolute_address_offset = 372;
+ AOT_Thread_float_absolute_address_offset = 392;
static constexpr dart::compiler::target::word
- AOT_Thread_float_negate_address_offset = 368;
+ AOT_Thread_float_negate_address_offset = 388;
static constexpr dart::compiler::target::word
- AOT_Thread_float_not_address_offset = 364;
+ AOT_Thread_float_not_address_offset = 384;
static constexpr dart::compiler::target::word
- AOT_Thread_float_zerow_address_offset = 376;
+ AOT_Thread_float_zerow_address_offset = 396;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 800;
+ AOT_Thread_global_object_pool_offset = 824;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 136;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 828;
+ AOT_Thread_exit_through_ffi_offset = 852;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 864;
+ 888;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 64;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_return_stub_offset = 236;
+ AOT_Thread_lazy_deopt_from_return_stub_offset = 256;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_throw_stub_offset = 240;
+ AOT_Thread_lazy_deopt_from_throw_stub_offset = 260;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_specialize_type_test_stub_offset = 248;
+ AOT_Thread_lazy_specialize_type_test_stub_offset = 268;
static constexpr dart::compiler::target::word
AOT_Thread_marking_stack_block_offset = 80;
static constexpr dart::compiler::target::word
- AOT_Thread_megamorphic_call_checked_entry_offset = 308;
+ AOT_Thread_megamorphic_call_checked_entry_offset = 328;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_entry_offset = 312;
+ AOT_Thread_switchable_call_miss_entry_offset = 332;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_stub_offset = 212;
+ AOT_Thread_switchable_call_miss_stub_offset = 232;
static constexpr dart::compiler::target::word
- AOT_Thread_no_scope_native_wrapper_entry_point_offset = 340;
+ AOT_Thread_no_scope_native_wrapper_entry_point_offset = 360;
static constexpr dart::compiler::target::word
AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 148;
static constexpr dart::compiler::target::word
@@ -15233,19 +15951,27 @@
AOT_Thread_range_error_shared_with_fpu_regs_stub_offset = 180;
static constexpr dart::compiler::target::word
AOT_Thread_range_error_shared_without_fpu_regs_stub_offset = 176;
+static constexpr dart::compiler::target::word AOT_Thread_resume_stub_offset =
+ 208;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_not_future_stub_offset = 216;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_star_stub_offset = 220;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_stub_offset = 212;
static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
112;
static constexpr dart::compiler::target::word
- AOT_Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 804;
+ AOT_Thread_predefined_symbols_address_offset = 368;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 828;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 808;
+ AOT_Thread_saved_shadow_call_stack_offset = 832;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 816;
+ AOT_Thread_safepoint_state_offset = 840;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_stub_offset = 244;
+ AOT_Thread_slow_type_test_stub_offset = 264;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_entry_point_offset = 332;
+ AOT_Thread_slow_type_test_entry_point_offset = 352;
static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
28;
static constexpr dart::compiler::target::word
@@ -15253,31 +15979,31 @@
static constexpr dart::compiler::target::word
AOT_Thread_stack_overflow_flags_offset = 60;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 304;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 324;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 208;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 228;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 300;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 320;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 204;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 224;
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 76;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_entry_point_offset = 764;
+ AOT_Thread_suspend_state_await_entry_point_offset = 788;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_entry_point_offset = 760;
+ AOT_Thread_suspend_state_init_async_entry_point_offset = 784;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_entry_point_offset = 768;
+ AOT_Thread_suspend_state_return_async_entry_point_offset = 792;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 772;
+ AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 796;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_star_entry_point_offset = 776;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 800;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 780;
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 804;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_star_entry_point_offset = 784;
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 808;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 788;
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 812;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 48;
@@ -15289,19 +16015,19 @@
AOT_Thread_unboxed_double_runtime_arg_offset = 104;
static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_write_barrier_entry_point_offset = 268;
+ AOT_Thread_write_barrier_entry_point_offset = 288;
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_mask_offset = 32;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 36;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 820;
+ 844;
static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 824;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 840;
+ AOT_Thread_callback_stack_return_offset = 848;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 864;
static constexpr dart::compiler::target::word
- AOT_Thread_jump_to_frame_entry_point_offset = 328;
+ AOT_Thread_jump_to_frame_entry_point_offset = 348;
static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
- 848;
+ 872;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
@@ -15414,7 +16140,7 @@
4, 12, 8, 16};
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_wrappers_thread_offset[] = {
- 728, 732, 736, 740, 744, -1, 748, -1, 752, 756, -1, -1, -1, -1, -1, -1};
+ 752, 756, 760, 764, 768, -1, 772, -1, 776, 780, -1, -1, -1, -1, -1, -1};
static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
12;
static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 8;
@@ -15650,9 +16376,8 @@
AOT_Closure_instantiator_type_arguments_offset = 8;
static constexpr dart::compiler::target::word
AOT_ClosureData_default_type_arguments_kind_offset = 32;
+static constexpr dart::compiler::target::word AOT_Code_instructions_offset = 48;
static constexpr dart::compiler::target::word AOT_Code_object_pool_offset = 40;
-static constexpr dart::compiler::target::word
- AOT_Code_saved_instructions_offset = 48;
static constexpr dart::compiler::target::word AOT_Code_owner_offset = 56;
static constexpr dart::compiler::target::word AOT_Context_num_variables_offset =
8;
@@ -15755,6 +16480,22 @@
AOT_ObjectStore_string_type_offset = 376;
static constexpr dart::compiler::target::word AOT_ObjectStore_type_type_offset =
224;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_await_offset = 1008;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_handle_exception_offset = 1056;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_offset = 1000;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_star_offset = 1032;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_offset = 1016;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_not_future_offset = 1024;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_star_offset = 1048;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_yield_async_star_offset = 1040;
static constexpr dart::compiler::target::word AOT_OneByteString_data_offset =
16;
static constexpr dart::compiler::target::word AOT_PointerBase_data_offset = 8;
@@ -15778,6 +16519,8 @@
static constexpr dart::compiler::target::word
AOT_SubtypeTestCache_cache_offset = 8;
static constexpr dart::compiler::target::word
+ AOT_SuspendState_FrameSizeGrowthGap = 0;
+static constexpr dart::compiler::target::word
AOT_SuspendState_error_callback_offset = 40;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 8;
@@ -15789,118 +16532,120 @@
static constexpr dart::compiler::target::word
AOT_SuspendState_then_callback_offset = 32;
static constexpr dart::compiler::target::word
- AOT_Thread_AllocateArray_entry_point_offset = 736;
+ AOT_Thread_AllocateArray_entry_point_offset = 776;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1584;
+ AOT_Thread_active_exception_offset = 1632;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1592;
+ AOT_Thread_active_stacktrace_offset = 1640;
static constexpr dart::compiler::target::word
- AOT_Thread_array_write_barrier_entry_point_offset = 520;
+ AOT_Thread_array_write_barrier_entry_point_offset = 560;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 536;
+ AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 576;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_with_fpu_regs_stub_offset = 344;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 544;
+ AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 584;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_without_fpu_regs_stub_offset = 352;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_entry_point_offset = 552;
+ AOT_Thread_allocate_object_entry_point_offset = 592;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_stub_offset = 360;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_parameterized_entry_point_offset = 560;
+ AOT_Thread_allocate_object_parameterized_entry_point_offset = 600;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_parameterized_stub_offset = 368;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_slow_entry_point_offset = 568;
+ AOT_Thread_allocate_object_slow_entry_point_offset = 608;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1664;
+ 1712;
static constexpr dart::compiler::target::word
- AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
+ AOT_Thread_async_exception_handler_stub_offset = 384;
+static constexpr dart::compiler::target::word
+ AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 704;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
216;
static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208;
static constexpr dart::compiler::target::word
- AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648;
+ AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 688;
static constexpr dart::compiler::target::word
- AOT_Thread_call_to_runtime_entry_point_offset = 528;
+ AOT_Thread_call_to_runtime_entry_point_offset = 568;
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 256;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1704;
+ 1752;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 1672;
+ AOT_Thread_double_truncate_round_supported_offset = 1720;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 1712;
+ AOT_Thread_service_extension_stream_offset = 1760;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
- 608;
+ 648;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
- 432;
+ 472;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_entry_offset = 616;
+ AOT_Thread_deoptimize_entry_offset = 656;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_stub_offset = 440;
+ AOT_Thread_deoptimize_stub_offset = 480;
static constexpr dart::compiler::target::word
- AOT_Thread_double_abs_address_offset = 696;
+ AOT_Thread_double_abs_address_offset = 736;
static constexpr dart::compiler::target::word
- AOT_Thread_double_negate_address_offset = 688;
+ AOT_Thread_double_negate_address_offset = 728;
static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104;
static constexpr dart::compiler::target::word
- AOT_Thread_enter_safepoint_stub_offset = 480;
+ AOT_Thread_enter_safepoint_stub_offset = 520;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1624;
+ AOT_Thread_execution_state_offset = 1672;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_stub_offset = 488;
+ AOT_Thread_exit_safepoint_stub_offset = 528;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 496;
+ AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 536;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_stub_offset = 504;
+ AOT_Thread_call_native_through_safepoint_stub_offset = 544;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_entry_point_offset = 624;
+ AOT_Thread_call_native_through_safepoint_entry_point_offset = 664;
static constexpr dart::compiler::target::word
AOT_Thread_fix_allocation_stub_code_offset = 240;
static constexpr dart::compiler::target::word
AOT_Thread_fix_callers_target_code_offset = 232;
static constexpr dart::compiler::target::word
- AOT_Thread_float_absolute_address_offset = 720;
+ AOT_Thread_float_absolute_address_offset = 760;
static constexpr dart::compiler::target::word
- AOT_Thread_float_negate_address_offset = 712;
+ AOT_Thread_float_negate_address_offset = 752;
static constexpr dart::compiler::target::word
- AOT_Thread_float_not_address_offset = 704;
+ AOT_Thread_float_not_address_offset = 744;
static constexpr dart::compiler::target::word
- AOT_Thread_float_zerow_address_offset = 728;
+ AOT_Thread_float_zerow_address_offset = 768;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1600;
+ AOT_Thread_global_object_pool_offset = 1648;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1656;
+ AOT_Thread_exit_through_ffi_offset = 1704;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 1720;
+ 1768;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 128;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_return_stub_offset = 448;
+ AOT_Thread_lazy_deopt_from_return_stub_offset = 488;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_throw_stub_offset = 456;
+ AOT_Thread_lazy_deopt_from_throw_stub_offset = 496;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_specialize_type_test_stub_offset = 472;
+ AOT_Thread_lazy_specialize_type_test_stub_offset = 512;
static constexpr dart::compiler::target::word
AOT_Thread_marking_stack_block_offset = 160;
static constexpr dart::compiler::target::word
- AOT_Thread_megamorphic_call_checked_entry_offset = 592;
+ AOT_Thread_megamorphic_call_checked_entry_offset = 632;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_entry_offset = 600;
+ AOT_Thread_switchable_call_miss_entry_offset = 640;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_stub_offset = 400;
+ AOT_Thread_switchable_call_miss_stub_offset = 440;
static constexpr dart::compiler::target::word
- AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656;
+ AOT_Thread_no_scope_native_wrapper_entry_point_offset = 696;
static constexpr dart::compiler::target::word
AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 272;
static constexpr dart::compiler::target::word
@@ -15922,20 +16667,28 @@
AOT_Thread_range_error_shared_with_fpu_regs_stub_offset = 336;
static constexpr dart::compiler::target::word
AOT_Thread_range_error_shared_without_fpu_regs_stub_offset = 328;
+static constexpr dart::compiler::target::word AOT_Thread_resume_stub_offset =
+ 392;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_not_future_stub_offset = 408;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_star_stub_offset = 416;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_stub_offset = 400;
static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
200;
static constexpr dart::compiler::target::word
- AOT_Thread_predefined_symbols_address_offset = 672;
+ AOT_Thread_predefined_symbols_address_offset = 712;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1608;
+ 1656;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1616;
+ AOT_Thread_saved_shadow_call_stack_offset = 1664;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1632;
+ AOT_Thread_safepoint_state_offset = 1680;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_stub_offset = 464;
+ AOT_Thread_slow_type_test_stub_offset = 504;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_entry_point_offset = 640;
+ AOT_Thread_slow_type_test_entry_point_offset = 680;
static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
56;
static constexpr dart::compiler::target::word
@@ -15943,31 +16696,31 @@
static constexpr dart::compiler::target::word
AOT_Thread_stack_overflow_flags_offset = 120;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 584;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 624;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 392;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 432;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 576;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 616;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 384;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 424;
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 152;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_entry_point_offset = 1528;
+ AOT_Thread_suspend_state_await_entry_point_offset = 1576;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_entry_point_offset = 1520;
+ AOT_Thread_suspend_state_init_async_entry_point_offset = 1568;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_entry_point_offset = 1536;
+ AOT_Thread_suspend_state_return_async_entry_point_offset = 1584;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
+ AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1592;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1600;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1608;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1616;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1576;
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1624;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -15979,20 +16732,20 @@
AOT_Thread_unboxed_double_runtime_arg_offset = 192;
static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 176;
static constexpr dart::compiler::target::word
- AOT_Thread_write_barrier_entry_point_offset = 512;
+ AOT_Thread_write_barrier_entry_point_offset = 552;
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_mask_offset = 64;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1640;
-static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 1648;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1680;
-static constexpr dart::compiler::target::word
- AOT_Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
1688;
static constexpr dart::compiler::target::word
+ AOT_Thread_callback_stack_return_offset = 1696;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1728;
+static constexpr dart::compiler::target::word
+ AOT_Thread_jump_to_frame_entry_point_offset = 672;
+static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
+ 1736;
+static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_buffer_offset = 8;
@@ -16105,8 +16858,8 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_wrappers_thread_offset[] = {
- 1432, 1440, 1448, 1456, -1, -1, 1464, 1472,
- 1480, 1488, 1496, -1, 1504, 1512, -1, -1};
+ 1480, 1488, 1496, 1504, -1, -1, 1512, 1520,
+ 1528, 1536, 1544, -1, 1552, 1560, -1, -1};
static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
24;
static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -16345,9 +17098,8 @@
AOT_Closure_instantiator_type_arguments_offset = 8;
static constexpr dart::compiler::target::word
AOT_ClosureData_default_type_arguments_kind_offset = 32;
+static constexpr dart::compiler::target::word AOT_Code_instructions_offset = 48;
static constexpr dart::compiler::target::word AOT_Code_object_pool_offset = 40;
-static constexpr dart::compiler::target::word
- AOT_Code_saved_instructions_offset = 48;
static constexpr dart::compiler::target::word AOT_Code_owner_offset = 56;
static constexpr dart::compiler::target::word AOT_Context_num_variables_offset =
8;
@@ -16450,6 +17202,22 @@
AOT_ObjectStore_string_type_offset = 376;
static constexpr dart::compiler::target::word AOT_ObjectStore_type_type_offset =
224;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_await_offset = 1008;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_handle_exception_offset = 1056;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_offset = 1000;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_star_offset = 1032;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_offset = 1016;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_not_future_offset = 1024;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_star_offset = 1048;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_yield_async_star_offset = 1040;
static constexpr dart::compiler::target::word AOT_OneByteString_data_offset =
16;
static constexpr dart::compiler::target::word AOT_PointerBase_data_offset = 8;
@@ -16473,6 +17241,8 @@
static constexpr dart::compiler::target::word
AOT_SubtypeTestCache_cache_offset = 8;
static constexpr dart::compiler::target::word
+ AOT_SuspendState_FrameSizeGrowthGap = 0;
+static constexpr dart::compiler::target::word
AOT_SuspendState_error_callback_offset = 40;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 8;
@@ -16484,118 +17254,120 @@
static constexpr dart::compiler::target::word
AOT_SuspendState_then_callback_offset = 32;
static constexpr dart::compiler::target::word
- AOT_Thread_AllocateArray_entry_point_offset = 736;
+ AOT_Thread_AllocateArray_entry_point_offset = 776;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1648;
+ AOT_Thread_active_exception_offset = 1696;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1656;
+ AOT_Thread_active_stacktrace_offset = 1704;
static constexpr dart::compiler::target::word
- AOT_Thread_array_write_barrier_entry_point_offset = 520;
+ AOT_Thread_array_write_barrier_entry_point_offset = 560;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 536;
+ AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 576;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_with_fpu_regs_stub_offset = 344;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 544;
+ AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 584;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_without_fpu_regs_stub_offset = 352;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_entry_point_offset = 552;
+ AOT_Thread_allocate_object_entry_point_offset = 592;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_stub_offset = 360;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_parameterized_entry_point_offset = 560;
+ AOT_Thread_allocate_object_parameterized_entry_point_offset = 600;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_parameterized_stub_offset = 368;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_slow_entry_point_offset = 568;
+ AOT_Thread_allocate_object_slow_entry_point_offset = 608;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1728;
+ 1776;
static constexpr dart::compiler::target::word
- AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
+ AOT_Thread_async_exception_handler_stub_offset = 384;
+static constexpr dart::compiler::target::word
+ AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 704;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
216;
static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208;
static constexpr dart::compiler::target::word
- AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648;
+ AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 688;
static constexpr dart::compiler::target::word
- AOT_Thread_call_to_runtime_entry_point_offset = 528;
+ AOT_Thread_call_to_runtime_entry_point_offset = 568;
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 256;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1768;
+ 1816;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 1736;
+ AOT_Thread_double_truncate_round_supported_offset = 1784;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 1776;
+ AOT_Thread_service_extension_stream_offset = 1824;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
- 608;
+ 648;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
- 432;
+ 472;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_entry_offset = 616;
+ AOT_Thread_deoptimize_entry_offset = 656;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_stub_offset = 440;
+ AOT_Thread_deoptimize_stub_offset = 480;
static constexpr dart::compiler::target::word
- AOT_Thread_double_abs_address_offset = 696;
+ AOT_Thread_double_abs_address_offset = 736;
static constexpr dart::compiler::target::word
- AOT_Thread_double_negate_address_offset = 688;
+ AOT_Thread_double_negate_address_offset = 728;
static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104;
static constexpr dart::compiler::target::word
- AOT_Thread_enter_safepoint_stub_offset = 480;
+ AOT_Thread_enter_safepoint_stub_offset = 520;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1688;
+ AOT_Thread_execution_state_offset = 1736;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_stub_offset = 488;
+ AOT_Thread_exit_safepoint_stub_offset = 528;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 496;
+ AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 536;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_stub_offset = 504;
+ AOT_Thread_call_native_through_safepoint_stub_offset = 544;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_entry_point_offset = 624;
+ AOT_Thread_call_native_through_safepoint_entry_point_offset = 664;
static constexpr dart::compiler::target::word
AOT_Thread_fix_allocation_stub_code_offset = 240;
static constexpr dart::compiler::target::word
AOT_Thread_fix_callers_target_code_offset = 232;
static constexpr dart::compiler::target::word
- AOT_Thread_float_absolute_address_offset = 720;
+ AOT_Thread_float_absolute_address_offset = 760;
static constexpr dart::compiler::target::word
- AOT_Thread_float_negate_address_offset = 712;
+ AOT_Thread_float_negate_address_offset = 752;
static constexpr dart::compiler::target::word
- AOT_Thread_float_not_address_offset = 704;
+ AOT_Thread_float_not_address_offset = 744;
static constexpr dart::compiler::target::word
- AOT_Thread_float_zerow_address_offset = 728;
+ AOT_Thread_float_zerow_address_offset = 768;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1664;
+ AOT_Thread_global_object_pool_offset = 1712;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1720;
+ AOT_Thread_exit_through_ffi_offset = 1768;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 1784;
+ 1832;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 128;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_return_stub_offset = 448;
+ AOT_Thread_lazy_deopt_from_return_stub_offset = 488;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_throw_stub_offset = 456;
+ AOT_Thread_lazy_deopt_from_throw_stub_offset = 496;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_specialize_type_test_stub_offset = 472;
+ AOT_Thread_lazy_specialize_type_test_stub_offset = 512;
static constexpr dart::compiler::target::word
AOT_Thread_marking_stack_block_offset = 160;
static constexpr dart::compiler::target::word
- AOT_Thread_megamorphic_call_checked_entry_offset = 592;
+ AOT_Thread_megamorphic_call_checked_entry_offset = 632;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_entry_offset = 600;
+ AOT_Thread_switchable_call_miss_entry_offset = 640;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_stub_offset = 400;
+ AOT_Thread_switchable_call_miss_stub_offset = 440;
static constexpr dart::compiler::target::word
- AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656;
+ AOT_Thread_no_scope_native_wrapper_entry_point_offset = 696;
static constexpr dart::compiler::target::word
AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 272;
static constexpr dart::compiler::target::word
@@ -16617,20 +17389,28 @@
AOT_Thread_range_error_shared_with_fpu_regs_stub_offset = 336;
static constexpr dart::compiler::target::word
AOT_Thread_range_error_shared_without_fpu_regs_stub_offset = 328;
+static constexpr dart::compiler::target::word AOT_Thread_resume_stub_offset =
+ 392;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_not_future_stub_offset = 408;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_star_stub_offset = 416;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_stub_offset = 400;
static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
200;
static constexpr dart::compiler::target::word
- AOT_Thread_predefined_symbols_address_offset = 672;
+ AOT_Thread_predefined_symbols_address_offset = 712;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1672;
+ 1720;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1680;
+ AOT_Thread_saved_shadow_call_stack_offset = 1728;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1696;
+ AOT_Thread_safepoint_state_offset = 1744;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_stub_offset = 464;
+ AOT_Thread_slow_type_test_stub_offset = 504;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_entry_point_offset = 640;
+ AOT_Thread_slow_type_test_entry_point_offset = 680;
static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
56;
static constexpr dart::compiler::target::word
@@ -16638,31 +17418,31 @@
static constexpr dart::compiler::target::word
AOT_Thread_stack_overflow_flags_offset = 120;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 584;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 624;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 392;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 432;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 576;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 616;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 384;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 424;
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 152;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_entry_point_offset = 1592;
+ AOT_Thread_suspend_state_await_entry_point_offset = 1640;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_entry_point_offset = 1584;
+ AOT_Thread_suspend_state_init_async_entry_point_offset = 1632;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_entry_point_offset = 1600;
+ AOT_Thread_suspend_state_return_async_entry_point_offset = 1648;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
+ AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1656;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1664;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1672;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1680;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1640;
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1688;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -16674,20 +17454,20 @@
AOT_Thread_unboxed_double_runtime_arg_offset = 192;
static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 176;
static constexpr dart::compiler::target::word
- AOT_Thread_write_barrier_entry_point_offset = 512;
+ AOT_Thread_write_barrier_entry_point_offset = 552;
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_mask_offset = 64;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1704;
-static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 1712;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1744;
-static constexpr dart::compiler::target::word
- AOT_Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
1752;
static constexpr dart::compiler::target::word
+ AOT_Thread_callback_stack_return_offset = 1760;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1792;
+static constexpr dart::compiler::target::word
+ AOT_Thread_jump_to_frame_entry_point_offset = 672;
+static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
+ 1800;
+static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_buffer_offset = 8;
@@ -16800,9 +17580,9 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_wrappers_thread_offset[] = {
- 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496, 1504, 1512,
- 1520, 1528, 1536, 1544, -1, -1, -1, -1, 1552, 1560, -1,
- -1, 1568, 1576, 1584, -1, -1, -1, -1, -1, -1};
+ 1480, 1488, 1496, 1504, 1512, 1520, 1528, 1536, 1544, 1552, 1560,
+ 1568, 1576, 1584, 1592, -1, -1, -1, -1, 1600, 1608, -1,
+ -1, 1616, 1624, 1632, -1, -1, -1, -1, -1, -1};
static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
24;
static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -17037,9 +17817,8 @@
AOT_Closure_instantiator_type_arguments_offset = 8;
static constexpr dart::compiler::target::word
AOT_ClosureData_default_type_arguments_kind_offset = 20;
+static constexpr dart::compiler::target::word AOT_Code_instructions_offset = 48;
static constexpr dart::compiler::target::word AOT_Code_object_pool_offset = 40;
-static constexpr dart::compiler::target::word
- AOT_Code_saved_instructions_offset = 48;
static constexpr dart::compiler::target::word AOT_Code_owner_offset = 56;
static constexpr dart::compiler::target::word AOT_Context_num_variables_offset =
8;
@@ -17142,6 +17921,22 @@
AOT_ObjectStore_string_type_offset = 376;
static constexpr dart::compiler::target::word AOT_ObjectStore_type_type_offset =
224;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_await_offset = 1008;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_handle_exception_offset = 1056;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_offset = 1000;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_star_offset = 1032;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_offset = 1016;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_not_future_offset = 1024;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_star_offset = 1048;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_yield_async_star_offset = 1040;
static constexpr dart::compiler::target::word AOT_OneByteString_data_offset =
16;
static constexpr dart::compiler::target::word AOT_PointerBase_data_offset = 8;
@@ -17165,6 +17960,8 @@
static constexpr dart::compiler::target::word
AOT_SubtypeTestCache_cache_offset = 8;
static constexpr dart::compiler::target::word
+ AOT_SuspendState_FrameSizeGrowthGap = 0;
+static constexpr dart::compiler::target::word
AOT_SuspendState_error_callback_offset = 32;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 8;
@@ -17176,118 +17973,120 @@
static constexpr dart::compiler::target::word
AOT_SuspendState_then_callback_offset = 28;
static constexpr dart::compiler::target::word
- AOT_Thread_AllocateArray_entry_point_offset = 736;
+ AOT_Thread_AllocateArray_entry_point_offset = 776;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1584;
+ AOT_Thread_active_exception_offset = 1632;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1592;
+ AOT_Thread_active_stacktrace_offset = 1640;
static constexpr dart::compiler::target::word
- AOT_Thread_array_write_barrier_entry_point_offset = 520;
+ AOT_Thread_array_write_barrier_entry_point_offset = 560;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 536;
+ AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 576;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_with_fpu_regs_stub_offset = 344;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 544;
+ AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 584;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_without_fpu_regs_stub_offset = 352;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_entry_point_offset = 552;
+ AOT_Thread_allocate_object_entry_point_offset = 592;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_stub_offset = 360;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_parameterized_entry_point_offset = 560;
+ AOT_Thread_allocate_object_parameterized_entry_point_offset = 600;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_parameterized_stub_offset = 368;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_slow_entry_point_offset = 568;
+ AOT_Thread_allocate_object_slow_entry_point_offset = 608;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1664;
+ 1712;
static constexpr dart::compiler::target::word
- AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
+ AOT_Thread_async_exception_handler_stub_offset = 384;
+static constexpr dart::compiler::target::word
+ AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 704;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
216;
static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208;
static constexpr dart::compiler::target::word
- AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648;
+ AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 688;
static constexpr dart::compiler::target::word
- AOT_Thread_call_to_runtime_entry_point_offset = 528;
+ AOT_Thread_call_to_runtime_entry_point_offset = 568;
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 256;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1704;
+ 1752;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 1672;
+ AOT_Thread_double_truncate_round_supported_offset = 1720;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 1712;
+ AOT_Thread_service_extension_stream_offset = 1760;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
- 608;
+ 648;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
- 432;
+ 472;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_entry_offset = 616;
+ AOT_Thread_deoptimize_entry_offset = 656;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_stub_offset = 440;
+ AOT_Thread_deoptimize_stub_offset = 480;
static constexpr dart::compiler::target::word
- AOT_Thread_double_abs_address_offset = 696;
+ AOT_Thread_double_abs_address_offset = 736;
static constexpr dart::compiler::target::word
- AOT_Thread_double_negate_address_offset = 688;
+ AOT_Thread_double_negate_address_offset = 728;
static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104;
static constexpr dart::compiler::target::word
- AOT_Thread_enter_safepoint_stub_offset = 480;
+ AOT_Thread_enter_safepoint_stub_offset = 520;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1624;
+ AOT_Thread_execution_state_offset = 1672;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_stub_offset = 488;
+ AOT_Thread_exit_safepoint_stub_offset = 528;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 496;
+ AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 536;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_stub_offset = 504;
+ AOT_Thread_call_native_through_safepoint_stub_offset = 544;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_entry_point_offset = 624;
+ AOT_Thread_call_native_through_safepoint_entry_point_offset = 664;
static constexpr dart::compiler::target::word
AOT_Thread_fix_allocation_stub_code_offset = 240;
static constexpr dart::compiler::target::word
AOT_Thread_fix_callers_target_code_offset = 232;
static constexpr dart::compiler::target::word
- AOT_Thread_float_absolute_address_offset = 720;
+ AOT_Thread_float_absolute_address_offset = 760;
static constexpr dart::compiler::target::word
- AOT_Thread_float_negate_address_offset = 712;
+ AOT_Thread_float_negate_address_offset = 752;
static constexpr dart::compiler::target::word
- AOT_Thread_float_not_address_offset = 704;
+ AOT_Thread_float_not_address_offset = 744;
static constexpr dart::compiler::target::word
- AOT_Thread_float_zerow_address_offset = 728;
+ AOT_Thread_float_zerow_address_offset = 768;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1600;
+ AOT_Thread_global_object_pool_offset = 1648;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1656;
+ AOT_Thread_exit_through_ffi_offset = 1704;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 1720;
+ 1768;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 128;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_return_stub_offset = 448;
+ AOT_Thread_lazy_deopt_from_return_stub_offset = 488;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_throw_stub_offset = 456;
+ AOT_Thread_lazy_deopt_from_throw_stub_offset = 496;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_specialize_type_test_stub_offset = 472;
+ AOT_Thread_lazy_specialize_type_test_stub_offset = 512;
static constexpr dart::compiler::target::word
AOT_Thread_marking_stack_block_offset = 160;
static constexpr dart::compiler::target::word
- AOT_Thread_megamorphic_call_checked_entry_offset = 592;
+ AOT_Thread_megamorphic_call_checked_entry_offset = 632;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_entry_offset = 600;
+ AOT_Thread_switchable_call_miss_entry_offset = 640;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_stub_offset = 400;
+ AOT_Thread_switchable_call_miss_stub_offset = 440;
static constexpr dart::compiler::target::word
- AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656;
+ AOT_Thread_no_scope_native_wrapper_entry_point_offset = 696;
static constexpr dart::compiler::target::word
AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 272;
static constexpr dart::compiler::target::word
@@ -17309,20 +18108,28 @@
AOT_Thread_range_error_shared_with_fpu_regs_stub_offset = 336;
static constexpr dart::compiler::target::word
AOT_Thread_range_error_shared_without_fpu_regs_stub_offset = 328;
+static constexpr dart::compiler::target::word AOT_Thread_resume_stub_offset =
+ 392;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_not_future_stub_offset = 408;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_star_stub_offset = 416;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_stub_offset = 400;
static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
200;
static constexpr dart::compiler::target::word
- AOT_Thread_predefined_symbols_address_offset = 672;
+ AOT_Thread_predefined_symbols_address_offset = 712;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1608;
+ 1656;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1616;
+ AOT_Thread_saved_shadow_call_stack_offset = 1664;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1632;
+ AOT_Thread_safepoint_state_offset = 1680;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_stub_offset = 464;
+ AOT_Thread_slow_type_test_stub_offset = 504;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_entry_point_offset = 640;
+ AOT_Thread_slow_type_test_entry_point_offset = 680;
static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
56;
static constexpr dart::compiler::target::word
@@ -17330,31 +18137,31 @@
static constexpr dart::compiler::target::word
AOT_Thread_stack_overflow_flags_offset = 120;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 584;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 624;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 392;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 432;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 576;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 616;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 384;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 424;
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 152;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_entry_point_offset = 1528;
+ AOT_Thread_suspend_state_await_entry_point_offset = 1576;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_entry_point_offset = 1520;
+ AOT_Thread_suspend_state_init_async_entry_point_offset = 1568;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_entry_point_offset = 1536;
+ AOT_Thread_suspend_state_return_async_entry_point_offset = 1584;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1544;
+ AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1592;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1552;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1600;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1560;
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1608;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1568;
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1616;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1576;
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1624;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -17366,20 +18173,20 @@
AOT_Thread_unboxed_double_runtime_arg_offset = 192;
static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 176;
static constexpr dart::compiler::target::word
- AOT_Thread_write_barrier_entry_point_offset = 512;
+ AOT_Thread_write_barrier_entry_point_offset = 552;
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_mask_offset = 64;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1640;
-static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 1648;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1680;
-static constexpr dart::compiler::target::word
- AOT_Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
1688;
static constexpr dart::compiler::target::word
+ AOT_Thread_callback_stack_return_offset = 1696;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1728;
+static constexpr dart::compiler::target::word
+ AOT_Thread_jump_to_frame_entry_point_offset = 672;
+static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
+ 1736;
+static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_buffer_offset = 8;
@@ -17492,8 +18299,8 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_wrappers_thread_offset[] = {
- 1432, 1440, 1448, 1456, -1, -1, 1464, 1472,
- 1480, 1488, 1496, -1, 1504, 1512, -1, -1};
+ 1480, 1488, 1496, 1504, -1, -1, 1512, 1520,
+ 1528, 1536, 1544, -1, 1552, 1560, -1, -1};
static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
24;
static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -17728,9 +18535,8 @@
AOT_Closure_instantiator_type_arguments_offset = 8;
static constexpr dart::compiler::target::word
AOT_ClosureData_default_type_arguments_kind_offset = 20;
+static constexpr dart::compiler::target::word AOT_Code_instructions_offset = 48;
static constexpr dart::compiler::target::word AOT_Code_object_pool_offset = 40;
-static constexpr dart::compiler::target::word
- AOT_Code_saved_instructions_offset = 48;
static constexpr dart::compiler::target::word AOT_Code_owner_offset = 56;
static constexpr dart::compiler::target::word AOT_Context_num_variables_offset =
8;
@@ -17833,6 +18639,22 @@
AOT_ObjectStore_string_type_offset = 376;
static constexpr dart::compiler::target::word AOT_ObjectStore_type_type_offset =
224;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_await_offset = 1008;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_handle_exception_offset = 1056;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_offset = 1000;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_star_offset = 1032;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_offset = 1016;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_not_future_offset = 1024;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_star_offset = 1048;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_yield_async_star_offset = 1040;
static constexpr dart::compiler::target::word AOT_OneByteString_data_offset =
16;
static constexpr dart::compiler::target::word AOT_PointerBase_data_offset = 8;
@@ -17856,6 +18678,8 @@
static constexpr dart::compiler::target::word
AOT_SubtypeTestCache_cache_offset = 8;
static constexpr dart::compiler::target::word
+ AOT_SuspendState_FrameSizeGrowthGap = 0;
+static constexpr dart::compiler::target::word
AOT_SuspendState_error_callback_offset = 32;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 8;
@@ -17867,118 +18691,120 @@
static constexpr dart::compiler::target::word
AOT_SuspendState_then_callback_offset = 28;
static constexpr dart::compiler::target::word
- AOT_Thread_AllocateArray_entry_point_offset = 736;
+ AOT_Thread_AllocateArray_entry_point_offset = 776;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1648;
+ AOT_Thread_active_exception_offset = 1696;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1656;
+ AOT_Thread_active_stacktrace_offset = 1704;
static constexpr dart::compiler::target::word
- AOT_Thread_array_write_barrier_entry_point_offset = 520;
+ AOT_Thread_array_write_barrier_entry_point_offset = 560;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 536;
+ AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 576;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_with_fpu_regs_stub_offset = 344;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 544;
+ AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 584;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_without_fpu_regs_stub_offset = 352;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_entry_point_offset = 552;
+ AOT_Thread_allocate_object_entry_point_offset = 592;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_stub_offset = 360;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_parameterized_entry_point_offset = 560;
+ AOT_Thread_allocate_object_parameterized_entry_point_offset = 600;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_parameterized_stub_offset = 368;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_slow_entry_point_offset = 568;
+ AOT_Thread_allocate_object_slow_entry_point_offset = 608;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1728;
+ 1776;
static constexpr dart::compiler::target::word
- AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
+ AOT_Thread_async_exception_handler_stub_offset = 384;
+static constexpr dart::compiler::target::word
+ AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 704;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
216;
static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208;
static constexpr dart::compiler::target::word
- AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648;
+ AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 688;
static constexpr dart::compiler::target::word
- AOT_Thread_call_to_runtime_entry_point_offset = 528;
+ AOT_Thread_call_to_runtime_entry_point_offset = 568;
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 256;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1768;
+ 1816;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 1736;
+ AOT_Thread_double_truncate_round_supported_offset = 1784;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 1776;
+ AOT_Thread_service_extension_stream_offset = 1824;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
- 608;
+ 648;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
- 432;
+ 472;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_entry_offset = 616;
+ AOT_Thread_deoptimize_entry_offset = 656;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_stub_offset = 440;
+ AOT_Thread_deoptimize_stub_offset = 480;
static constexpr dart::compiler::target::word
- AOT_Thread_double_abs_address_offset = 696;
+ AOT_Thread_double_abs_address_offset = 736;
static constexpr dart::compiler::target::word
- AOT_Thread_double_negate_address_offset = 688;
+ AOT_Thread_double_negate_address_offset = 728;
static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104;
static constexpr dart::compiler::target::word
- AOT_Thread_enter_safepoint_stub_offset = 480;
+ AOT_Thread_enter_safepoint_stub_offset = 520;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1688;
+ AOT_Thread_execution_state_offset = 1736;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_stub_offset = 488;
+ AOT_Thread_exit_safepoint_stub_offset = 528;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 496;
+ AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 536;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_stub_offset = 504;
+ AOT_Thread_call_native_through_safepoint_stub_offset = 544;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_entry_point_offset = 624;
+ AOT_Thread_call_native_through_safepoint_entry_point_offset = 664;
static constexpr dart::compiler::target::word
AOT_Thread_fix_allocation_stub_code_offset = 240;
static constexpr dart::compiler::target::word
AOT_Thread_fix_callers_target_code_offset = 232;
static constexpr dart::compiler::target::word
- AOT_Thread_float_absolute_address_offset = 720;
+ AOT_Thread_float_absolute_address_offset = 760;
static constexpr dart::compiler::target::word
- AOT_Thread_float_negate_address_offset = 712;
+ AOT_Thread_float_negate_address_offset = 752;
static constexpr dart::compiler::target::word
- AOT_Thread_float_not_address_offset = 704;
+ AOT_Thread_float_not_address_offset = 744;
static constexpr dart::compiler::target::word
- AOT_Thread_float_zerow_address_offset = 728;
+ AOT_Thread_float_zerow_address_offset = 768;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1664;
+ AOT_Thread_global_object_pool_offset = 1712;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1720;
+ AOT_Thread_exit_through_ffi_offset = 1768;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 1784;
+ 1832;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 128;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_return_stub_offset = 448;
+ AOT_Thread_lazy_deopt_from_return_stub_offset = 488;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_throw_stub_offset = 456;
+ AOT_Thread_lazy_deopt_from_throw_stub_offset = 496;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_specialize_type_test_stub_offset = 472;
+ AOT_Thread_lazy_specialize_type_test_stub_offset = 512;
static constexpr dart::compiler::target::word
AOT_Thread_marking_stack_block_offset = 160;
static constexpr dart::compiler::target::word
- AOT_Thread_megamorphic_call_checked_entry_offset = 592;
+ AOT_Thread_megamorphic_call_checked_entry_offset = 632;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_entry_offset = 600;
+ AOT_Thread_switchable_call_miss_entry_offset = 640;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_stub_offset = 400;
+ AOT_Thread_switchable_call_miss_stub_offset = 440;
static constexpr dart::compiler::target::word
- AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656;
+ AOT_Thread_no_scope_native_wrapper_entry_point_offset = 696;
static constexpr dart::compiler::target::word
AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 272;
static constexpr dart::compiler::target::word
@@ -18000,20 +18826,28 @@
AOT_Thread_range_error_shared_with_fpu_regs_stub_offset = 336;
static constexpr dart::compiler::target::word
AOT_Thread_range_error_shared_without_fpu_regs_stub_offset = 328;
+static constexpr dart::compiler::target::word AOT_Thread_resume_stub_offset =
+ 392;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_not_future_stub_offset = 408;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_star_stub_offset = 416;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_stub_offset = 400;
static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
200;
static constexpr dart::compiler::target::word
- AOT_Thread_predefined_symbols_address_offset = 672;
+ AOT_Thread_predefined_symbols_address_offset = 712;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1672;
+ 1720;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1680;
+ AOT_Thread_saved_shadow_call_stack_offset = 1728;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1696;
+ AOT_Thread_safepoint_state_offset = 1744;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_stub_offset = 464;
+ AOT_Thread_slow_type_test_stub_offset = 504;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_entry_point_offset = 640;
+ AOT_Thread_slow_type_test_entry_point_offset = 680;
static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
56;
static constexpr dart::compiler::target::word
@@ -18021,31 +18855,31 @@
static constexpr dart::compiler::target::word
AOT_Thread_stack_overflow_flags_offset = 120;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 584;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 624;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 392;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 432;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 576;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 616;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 384;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 424;
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 152;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_entry_point_offset = 1592;
+ AOT_Thread_suspend_state_await_entry_point_offset = 1640;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_entry_point_offset = 1584;
+ AOT_Thread_suspend_state_init_async_entry_point_offset = 1632;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_entry_point_offset = 1600;
+ AOT_Thread_suspend_state_return_async_entry_point_offset = 1648;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1608;
+ AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1656;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1616;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1664;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1624;
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1672;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1632;
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1680;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1640;
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1688;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -18057,20 +18891,20 @@
AOT_Thread_unboxed_double_runtime_arg_offset = 192;
static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 176;
static constexpr dart::compiler::target::word
- AOT_Thread_write_barrier_entry_point_offset = 512;
+ AOT_Thread_write_barrier_entry_point_offset = 552;
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_mask_offset = 64;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1704;
-static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 1712;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1744;
-static constexpr dart::compiler::target::word
- AOT_Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
1752;
static constexpr dart::compiler::target::word
+ AOT_Thread_callback_stack_return_offset = 1760;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1792;
+static constexpr dart::compiler::target::word
+ AOT_Thread_jump_to_frame_entry_point_offset = 672;
+static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
+ 1800;
+static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_buffer_offset = 8;
@@ -18183,9 +19017,9 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_wrappers_thread_offset[] = {
- 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496, 1504, 1512,
- 1520, 1528, 1536, 1544, -1, -1, -1, -1, 1552, 1560, -1,
- -1, 1568, 1576, 1584, -1, -1, -1, -1, -1, -1};
+ 1480, 1488, 1496, 1504, 1512, 1520, 1528, 1536, 1544, 1552, 1560,
+ 1568, 1576, 1584, 1592, -1, -1, -1, -1, 1600, 1608, -1,
+ -1, 1616, 1624, 1632, -1, -1, -1, -1, -1, -1};
static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
24;
static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -18420,9 +19254,8 @@
AOT_Closure_instantiator_type_arguments_offset = 4;
static constexpr dart::compiler::target::word
AOT_ClosureData_default_type_arguments_kind_offset = 16;
+static constexpr dart::compiler::target::word AOT_Code_instructions_offset = 24;
static constexpr dart::compiler::target::word AOT_Code_object_pool_offset = 20;
-static constexpr dart::compiler::target::word
- AOT_Code_saved_instructions_offset = 24;
static constexpr dart::compiler::target::word AOT_Code_owner_offset = 28;
static constexpr dart::compiler::target::word AOT_Context_num_variables_offset =
4;
@@ -18525,6 +19358,22 @@
AOT_ObjectStore_string_type_offset = 188;
static constexpr dart::compiler::target::word AOT_ObjectStore_type_type_offset =
112;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_await_offset = 504;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_handle_exception_offset = 528;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_offset = 500;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_star_offset = 516;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_offset = 508;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_not_future_offset = 512;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_star_offset = 524;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_yield_async_star_offset = 520;
static constexpr dart::compiler::target::word AOT_OneByteString_data_offset =
12;
static constexpr dart::compiler::target::word AOT_PointerBase_data_offset = 4;
@@ -18548,6 +19397,8 @@
static constexpr dart::compiler::target::word
AOT_SubtypeTestCache_cache_offset = 4;
static constexpr dart::compiler::target::word
+ AOT_SuspendState_FrameSizeGrowthGap = 0;
+static constexpr dart::compiler::target::word
AOT_SuspendState_error_callback_offset = 20;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 4;
@@ -18559,118 +19410,120 @@
static constexpr dart::compiler::target::word
AOT_SuspendState_then_callback_offset = 16;
static constexpr dart::compiler::target::word
- AOT_Thread_AllocateArray_entry_point_offset = 380;
+ AOT_Thread_AllocateArray_entry_point_offset = 400;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 832;
+ AOT_Thread_active_exception_offset = 856;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 836;
+ AOT_Thread_active_stacktrace_offset = 860;
static constexpr dart::compiler::target::word
- AOT_Thread_array_write_barrier_entry_point_offset = 272;
+ AOT_Thread_array_write_barrier_entry_point_offset = 292;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 280;
+ AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 300;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_with_fpu_regs_stub_offset = 184;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 284;
+ AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 304;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_without_fpu_regs_stub_offset = 188;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_entry_point_offset = 288;
+ AOT_Thread_allocate_object_entry_point_offset = 308;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_stub_offset = 192;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_parameterized_entry_point_offset = 292;
+ AOT_Thread_allocate_object_parameterized_entry_point_offset = 312;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_parameterized_stub_offset = 196;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_slow_entry_point_offset = 296;
+ AOT_Thread_allocate_object_slow_entry_point_offset = 316;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 200;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 872;
+ 896;
static constexpr dart::compiler::target::word
- AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 344;
+ AOT_Thread_async_exception_handler_stub_offset = 204;
+static constexpr dart::compiler::target::word
+ AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 364;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
120;
static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 116;
static constexpr dart::compiler::target::word
- AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 336;
+ AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 356;
static constexpr dart::compiler::target::word
- AOT_Thread_call_to_runtime_entry_point_offset = 276;
+ AOT_Thread_call_to_runtime_entry_point_offset = 296;
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 140;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 896;
+ 920;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 44;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 876;
+ AOT_Thread_double_truncate_round_supported_offset = 900;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 900;
+ AOT_Thread_service_extension_stream_offset = 924;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
- 316;
+ 336;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
- 228;
+ 248;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_entry_offset = 320;
+ AOT_Thread_deoptimize_entry_offset = 340;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_stub_offset = 232;
+ AOT_Thread_deoptimize_stub_offset = 252;
static constexpr dart::compiler::target::word
- AOT_Thread_double_abs_address_offset = 360;
+ AOT_Thread_double_abs_address_offset = 380;
static constexpr dart::compiler::target::word
- AOT_Thread_double_negate_address_offset = 356;
+ AOT_Thread_double_negate_address_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_end_offset = 52;
static constexpr dart::compiler::target::word
- AOT_Thread_enter_safepoint_stub_offset = 252;
+ AOT_Thread_enter_safepoint_stub_offset = 272;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 852;
+ AOT_Thread_execution_state_offset = 876;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_stub_offset = 256;
+ AOT_Thread_exit_safepoint_stub_offset = 276;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 260;
+ AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 280;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_stub_offset = 264;
+ AOT_Thread_call_native_through_safepoint_stub_offset = 284;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_entry_point_offset = 324;
+ AOT_Thread_call_native_through_safepoint_entry_point_offset = 344;
static constexpr dart::compiler::target::word
AOT_Thread_fix_allocation_stub_code_offset = 132;
static constexpr dart::compiler::target::word
AOT_Thread_fix_callers_target_code_offset = 128;
static constexpr dart::compiler::target::word
- AOT_Thread_float_absolute_address_offset = 372;
+ AOT_Thread_float_absolute_address_offset = 392;
static constexpr dart::compiler::target::word
- AOT_Thread_float_negate_address_offset = 368;
+ AOT_Thread_float_negate_address_offset = 388;
static constexpr dart::compiler::target::word
- AOT_Thread_float_not_address_offset = 364;
+ AOT_Thread_float_not_address_offset = 384;
static constexpr dart::compiler::target::word
- AOT_Thread_float_zerow_address_offset = 376;
+ AOT_Thread_float_zerow_address_offset = 396;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 840;
+ AOT_Thread_global_object_pool_offset = 864;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 136;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 868;
+ AOT_Thread_exit_through_ffi_offset = 892;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 904;
+ 928;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 64;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_return_stub_offset = 236;
+ AOT_Thread_lazy_deopt_from_return_stub_offset = 256;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_throw_stub_offset = 240;
+ AOT_Thread_lazy_deopt_from_throw_stub_offset = 260;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_specialize_type_test_stub_offset = 248;
+ AOT_Thread_lazy_specialize_type_test_stub_offset = 268;
static constexpr dart::compiler::target::word
AOT_Thread_marking_stack_block_offset = 80;
static constexpr dart::compiler::target::word
- AOT_Thread_megamorphic_call_checked_entry_offset = 308;
+ AOT_Thread_megamorphic_call_checked_entry_offset = 328;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_entry_offset = 312;
+ AOT_Thread_switchable_call_miss_entry_offset = 332;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_stub_offset = 212;
+ AOT_Thread_switchable_call_miss_stub_offset = 232;
static constexpr dart::compiler::target::word
- AOT_Thread_no_scope_native_wrapper_entry_point_offset = 340;
+ AOT_Thread_no_scope_native_wrapper_entry_point_offset = 360;
static constexpr dart::compiler::target::word
AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 148;
static constexpr dart::compiler::target::word
@@ -18692,19 +19545,27 @@
AOT_Thread_range_error_shared_with_fpu_regs_stub_offset = 180;
static constexpr dart::compiler::target::word
AOT_Thread_range_error_shared_without_fpu_regs_stub_offset = 176;
+static constexpr dart::compiler::target::word AOT_Thread_resume_stub_offset =
+ 208;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_not_future_stub_offset = 216;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_star_stub_offset = 220;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_stub_offset = 212;
static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
112;
static constexpr dart::compiler::target::word
- AOT_Thread_predefined_symbols_address_offset = 348;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 844;
+ AOT_Thread_predefined_symbols_address_offset = 368;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 868;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 848;
+ AOT_Thread_saved_shadow_call_stack_offset = 872;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 856;
+ AOT_Thread_safepoint_state_offset = 880;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_stub_offset = 244;
+ AOT_Thread_slow_type_test_stub_offset = 264;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_entry_point_offset = 332;
+ AOT_Thread_slow_type_test_entry_point_offset = 352;
static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
28;
static constexpr dart::compiler::target::word
@@ -18712,31 +19573,31 @@
static constexpr dart::compiler::target::word
AOT_Thread_stack_overflow_flags_offset = 60;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 304;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 324;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 208;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 228;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 300;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 320;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 204;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 224;
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 76;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_entry_point_offset = 804;
+ AOT_Thread_suspend_state_await_entry_point_offset = 828;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_entry_point_offset = 800;
+ AOT_Thread_suspend_state_init_async_entry_point_offset = 824;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_entry_point_offset = 808;
+ AOT_Thread_suspend_state_return_async_entry_point_offset = 832;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 812;
+ AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 836;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_star_entry_point_offset = 816;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 840;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 820;
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 844;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_star_entry_point_offset = 824;
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 848;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 828;
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 852;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 48;
@@ -18748,19 +19609,19 @@
AOT_Thread_unboxed_double_runtime_arg_offset = 104;
static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_write_barrier_entry_point_offset = 268;
+ AOT_Thread_write_barrier_entry_point_offset = 288;
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_mask_offset = 32;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 36;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 860;
+ 884;
static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 864;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 880;
+ AOT_Thread_callback_stack_return_offset = 888;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 904;
static constexpr dart::compiler::target::word
- AOT_Thread_jump_to_frame_entry_point_offset = 328;
+ AOT_Thread_jump_to_frame_entry_point_offset = 348;
static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
- 888;
+ 912;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
@@ -18873,9 +19734,9 @@
4, 12, 8, 16};
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_wrappers_thread_offset[] = {
- -1, -1, -1, -1, -1, 728, 732, 736, -1, -1, 740,
- 744, 748, -1, -1, -1, 752, 756, 760, 764, 768, 772,
- 776, 780, -1, -1, -1, -1, 784, 788, 792, 796};
+ -1, -1, -1, -1, -1, 752, 756, 760, -1, -1, 764,
+ 768, 772, -1, -1, -1, 776, 780, 784, 788, 792, 796,
+ 800, 804, -1, -1, -1, -1, 808, 812, 816, 820};
static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
12;
static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 8;
@@ -19111,9 +19972,8 @@
AOT_Closure_instantiator_type_arguments_offset = 8;
static constexpr dart::compiler::target::word
AOT_ClosureData_default_type_arguments_kind_offset = 32;
+static constexpr dart::compiler::target::word AOT_Code_instructions_offset = 48;
static constexpr dart::compiler::target::word AOT_Code_object_pool_offset = 40;
-static constexpr dart::compiler::target::word
- AOT_Code_saved_instructions_offset = 48;
static constexpr dart::compiler::target::word AOT_Code_owner_offset = 56;
static constexpr dart::compiler::target::word AOT_Context_num_variables_offset =
8;
@@ -19216,6 +20076,22 @@
AOT_ObjectStore_string_type_offset = 376;
static constexpr dart::compiler::target::word AOT_ObjectStore_type_type_offset =
224;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_await_offset = 1008;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_handle_exception_offset = 1056;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_offset = 1000;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_init_async_star_offset = 1032;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_offset = 1016;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_not_future_offset = 1024;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_return_async_star_offset = 1048;
+static constexpr dart::compiler::target::word
+ AOT_ObjectStore_suspend_state_yield_async_star_offset = 1040;
static constexpr dart::compiler::target::word AOT_OneByteString_data_offset =
16;
static constexpr dart::compiler::target::word AOT_PointerBase_data_offset = 8;
@@ -19239,6 +20115,8 @@
static constexpr dart::compiler::target::word
AOT_SubtypeTestCache_cache_offset = 8;
static constexpr dart::compiler::target::word
+ AOT_SuspendState_FrameSizeGrowthGap = 0;
+static constexpr dart::compiler::target::word
AOT_SuspendState_error_callback_offset = 40;
static constexpr dart::compiler::target::word
AOT_SuspendState_frame_size_offset = 8;
@@ -19250,118 +20128,120 @@
static constexpr dart::compiler::target::word
AOT_SuspendState_then_callback_offset = 32;
static constexpr dart::compiler::target::word
- AOT_Thread_AllocateArray_entry_point_offset = 736;
+ AOT_Thread_AllocateArray_entry_point_offset = 776;
static constexpr dart::compiler::target::word
- AOT_Thread_active_exception_offset = 1640;
+ AOT_Thread_active_exception_offset = 1688;
static constexpr dart::compiler::target::word
- AOT_Thread_active_stacktrace_offset = 1648;
+ AOT_Thread_active_stacktrace_offset = 1696;
static constexpr dart::compiler::target::word
- AOT_Thread_array_write_barrier_entry_point_offset = 520;
+ AOT_Thread_array_write_barrier_entry_point_offset = 560;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 536;
+ AOT_Thread_allocate_mint_with_fpu_regs_entry_point_offset = 576;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_with_fpu_regs_stub_offset = 344;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 544;
+ AOT_Thread_allocate_mint_without_fpu_regs_entry_point_offset = 584;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_mint_without_fpu_regs_stub_offset = 352;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_entry_point_offset = 552;
+ AOT_Thread_allocate_object_entry_point_offset = 592;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_stub_offset = 360;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_parameterized_entry_point_offset = 560;
+ AOT_Thread_allocate_object_parameterized_entry_point_offset = 600;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_parameterized_stub_offset = 368;
static constexpr dart::compiler::target::word
- AOT_Thread_allocate_object_slow_entry_point_offset = 568;
+ AOT_Thread_allocate_object_slow_entry_point_offset = 608;
static constexpr dart::compiler::target::word
AOT_Thread_allocate_object_slow_stub_offset = 376;
static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
- 1720;
+ 1768;
static constexpr dart::compiler::target::word
- AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
+ AOT_Thread_async_exception_handler_stub_offset = 384;
+static constexpr dart::compiler::target::word
+ AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 704;
static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
216;
static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208;
static constexpr dart::compiler::target::word
- AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648;
+ AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 688;
static constexpr dart::compiler::target::word
- AOT_Thread_call_to_runtime_entry_point_offset = 528;
+ AOT_Thread_call_to_runtime_entry_point_offset = 568;
static constexpr dart::compiler::target::word
AOT_Thread_call_to_runtime_stub_offset = 256;
static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
- 1760;
+ 1808;
static constexpr dart::compiler::target::word
AOT_Thread_dispatch_table_array_offset = 88;
static constexpr dart::compiler::target::word
- AOT_Thread_double_truncate_round_supported_offset = 1728;
+ AOT_Thread_double_truncate_round_supported_offset = 1776;
static constexpr dart::compiler::target::word
- AOT_Thread_service_extension_stream_offset = 1768;
+ AOT_Thread_service_extension_stream_offset = 1816;
static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
- 608;
+ 648;
static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
- 432;
+ 472;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_entry_offset = 616;
+ AOT_Thread_deoptimize_entry_offset = 656;
static constexpr dart::compiler::target::word
- AOT_Thread_deoptimize_stub_offset = 440;
+ AOT_Thread_deoptimize_stub_offset = 480;
static constexpr dart::compiler::target::word
- AOT_Thread_double_abs_address_offset = 696;
+ AOT_Thread_double_abs_address_offset = 736;
static constexpr dart::compiler::target::word
- AOT_Thread_double_negate_address_offset = 688;
+ AOT_Thread_double_negate_address_offset = 728;
static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104;
static constexpr dart::compiler::target::word
- AOT_Thread_enter_safepoint_stub_offset = 480;
+ AOT_Thread_enter_safepoint_stub_offset = 520;
static constexpr dart::compiler::target::word
- AOT_Thread_execution_state_offset = 1680;
+ AOT_Thread_execution_state_offset = 1728;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_stub_offset = 488;
+ AOT_Thread_exit_safepoint_stub_offset = 528;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 496;
+ AOT_Thread_exit_safepoint_ignore_unwind_in_progress_stub_offset = 536;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_stub_offset = 504;
+ AOT_Thread_call_native_through_safepoint_stub_offset = 544;
static constexpr dart::compiler::target::word
- AOT_Thread_call_native_through_safepoint_entry_point_offset = 624;
+ AOT_Thread_call_native_through_safepoint_entry_point_offset = 664;
static constexpr dart::compiler::target::word
AOT_Thread_fix_allocation_stub_code_offset = 240;
static constexpr dart::compiler::target::word
AOT_Thread_fix_callers_target_code_offset = 232;
static constexpr dart::compiler::target::word
- AOT_Thread_float_absolute_address_offset = 720;
+ AOT_Thread_float_absolute_address_offset = 760;
static constexpr dart::compiler::target::word
- AOT_Thread_float_negate_address_offset = 712;
+ AOT_Thread_float_negate_address_offset = 752;
static constexpr dart::compiler::target::word
- AOT_Thread_float_not_address_offset = 704;
+ AOT_Thread_float_not_address_offset = 744;
static constexpr dart::compiler::target::word
- AOT_Thread_float_zerow_address_offset = 728;
+ AOT_Thread_float_zerow_address_offset = 768;
static constexpr dart::compiler::target::word
- AOT_Thread_global_object_pool_offset = 1656;
+ AOT_Thread_global_object_pool_offset = 1704;
static constexpr dart::compiler::target::word
AOT_Thread_invoke_dart_code_stub_offset = 248;
static constexpr dart::compiler::target::word
- AOT_Thread_exit_through_ffi_offset = 1712;
+ AOT_Thread_exit_through_ffi_offset = 1760;
static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
- 1776;
+ 1824;
static constexpr dart::compiler::target::word
AOT_Thread_field_table_values_offset = 128;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_return_stub_offset = 448;
+ AOT_Thread_lazy_deopt_from_return_stub_offset = 488;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_deopt_from_throw_stub_offset = 456;
+ AOT_Thread_lazy_deopt_from_throw_stub_offset = 496;
static constexpr dart::compiler::target::word
- AOT_Thread_lazy_specialize_type_test_stub_offset = 472;
+ AOT_Thread_lazy_specialize_type_test_stub_offset = 512;
static constexpr dart::compiler::target::word
AOT_Thread_marking_stack_block_offset = 160;
static constexpr dart::compiler::target::word
- AOT_Thread_megamorphic_call_checked_entry_offset = 592;
+ AOT_Thread_megamorphic_call_checked_entry_offset = 632;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_entry_offset = 600;
+ AOT_Thread_switchable_call_miss_entry_offset = 640;
static constexpr dart::compiler::target::word
- AOT_Thread_switchable_call_miss_stub_offset = 400;
+ AOT_Thread_switchable_call_miss_stub_offset = 440;
static constexpr dart::compiler::target::word
- AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656;
+ AOT_Thread_no_scope_native_wrapper_entry_point_offset = 696;
static constexpr dart::compiler::target::word
AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 272;
static constexpr dart::compiler::target::word
@@ -19383,20 +20263,28 @@
AOT_Thread_range_error_shared_with_fpu_regs_stub_offset = 336;
static constexpr dart::compiler::target::word
AOT_Thread_range_error_shared_without_fpu_regs_stub_offset = 328;
+static constexpr dart::compiler::target::word AOT_Thread_resume_stub_offset =
+ 392;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_not_future_stub_offset = 408;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_star_stub_offset = 416;
+static constexpr dart::compiler::target::word
+ AOT_Thread_return_async_stub_offset = 400;
static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
200;
static constexpr dart::compiler::target::word
- AOT_Thread_predefined_symbols_address_offset = 672;
+ AOT_Thread_predefined_symbols_address_offset = 712;
static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
- 1664;
+ 1712;
static constexpr dart::compiler::target::word
- AOT_Thread_saved_shadow_call_stack_offset = 1672;
+ AOT_Thread_saved_shadow_call_stack_offset = 1720;
static constexpr dart::compiler::target::word
- AOT_Thread_safepoint_state_offset = 1688;
+ AOT_Thread_safepoint_state_offset = 1736;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_stub_offset = 464;
+ AOT_Thread_slow_type_test_stub_offset = 504;
static constexpr dart::compiler::target::word
- AOT_Thread_slow_type_test_entry_point_offset = 640;
+ AOT_Thread_slow_type_test_entry_point_offset = 680;
static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
56;
static constexpr dart::compiler::target::word
@@ -19404,31 +20292,31 @@
static constexpr dart::compiler::target::word
AOT_Thread_stack_overflow_flags_offset = 120;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 584;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_entry_point_offset = 624;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 392;
+ AOT_Thread_stack_overflow_shared_with_fpu_regs_stub_offset = 432;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 576;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_entry_point_offset = 616;
static constexpr dart::compiler::target::word
- AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 384;
+ AOT_Thread_stack_overflow_shared_without_fpu_regs_stub_offset = 424;
static constexpr dart::compiler::target::word
AOT_Thread_store_buffer_block_offset = 152;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_await_entry_point_offset = 1584;
+ AOT_Thread_suspend_state_await_entry_point_offset = 1632;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_entry_point_offset = 1576;
+ AOT_Thread_suspend_state_init_async_entry_point_offset = 1624;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_entry_point_offset = 1592;
+ AOT_Thread_suspend_state_return_async_entry_point_offset = 1640;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1600;
+ AOT_Thread_suspend_state_return_async_not_future_entry_point_offset = 1648;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1608;
+ AOT_Thread_suspend_state_init_async_star_entry_point_offset = 1656;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1616;
+ AOT_Thread_suspend_state_yield_async_star_entry_point_offset = 1664;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1624;
+ AOT_Thread_suspend_state_return_async_star_entry_point_offset = 1672;
static constexpr dart::compiler::target::word
- AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1632;
+ AOT_Thread_suspend_state_handle_exception_entry_point_offset = 1680;
static constexpr dart::compiler::target::word
AOT_Thread_top_exit_frame_info_offset = 144;
static constexpr dart::compiler::target::word AOT_Thread_top_offset = 96;
@@ -19440,20 +20328,20 @@
AOT_Thread_unboxed_double_runtime_arg_offset = 192;
static constexpr dart::compiler::target::word AOT_Thread_vm_tag_offset = 176;
static constexpr dart::compiler::target::word
- AOT_Thread_write_barrier_entry_point_offset = 512;
+ AOT_Thread_write_barrier_entry_point_offset = 552;
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_mask_offset = 64;
static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
- 1696;
-static constexpr dart::compiler::target::word
- AOT_Thread_callback_stack_return_offset = 1704;
-static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1736;
-static constexpr dart::compiler::target::word
- AOT_Thread_jump_to_frame_entry_point_offset = 632;
-static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
1744;
static constexpr dart::compiler::target::word
+ AOT_Thread_callback_stack_return_offset = 1752;
+static constexpr dart::compiler::target::word AOT_Thread_random_offset = 1784;
+static constexpr dart::compiler::target::word
+ AOT_Thread_jump_to_frame_entry_point_offset = 672;
+static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
+ 1792;
+static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_function_offset = 0;
static constexpr dart::compiler::target::word
AOT_TsanUtils_setjmp_buffer_offset = 8;
@@ -19566,9 +20454,9 @@
8, 24, 16, 32};
static constexpr dart::compiler::target::word
AOT_Thread_write_barrier_wrappers_thread_offset[] = {
- -1, -1, -1, -1, -1, 1432, 1440, 1448, -1, -1, 1456,
- 1464, 1472, -1, -1, -1, 1480, 1488, 1496, 1504, 1512, 1520,
- 1528, 1536, -1, -1, -1, -1, 1544, 1552, 1560, 1568};
+ -1, -1, -1, -1, -1, 1480, 1488, 1496, -1, -1, 1504,
+ 1512, 1520, -1, -1, -1, 1528, 1536, 1544, 1552, 1560, 1568,
+ 1576, 1584, -1, -1, -1, -1, 1592, 1600, 1608, 1616};
static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
24;
static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
diff --git a/runtime/vm/compiler/runtime_offsets_list.h b/runtime/vm/compiler/runtime_offsets_list.h
index b631b58..d4b23a4 100644
--- a/runtime/vm/compiler/runtime_offsets_list.h
+++ b/runtime/vm/compiler/runtime_offsets_list.h
@@ -111,8 +111,8 @@
FIELD(Closure, hash_offset) \
FIELD(Closure, instantiator_type_arguments_offset) \
FIELD(ClosureData, default_type_arguments_kind_offset) \
+ FIELD(Code, instructions_offset) \
FIELD(Code, object_pool_offset) \
- FIELD(Code, saved_instructions_offset) \
FIELD(Code, owner_offset) \
FIELD(Context, num_variables_offset) \
FIELD(Context, parent_offset) \
@@ -149,6 +149,7 @@
FIELD(Isolate, current_tag_offset) \
FIELD(Isolate, default_tag_offset) \
FIELD(Isolate, finalizers_offset) \
+ NOT_IN_PRODUCT(FIELD(Isolate, has_resumption_breakpoints_offset)) \
FIELD(Isolate, ic_miss_code_offset) \
FIELD(IsolateGroup, object_store_offset) \
FIELD(IsolateGroup, shared_class_table_offset) \
@@ -176,6 +177,14 @@
FIELD(ObjectStore, int_type_offset) \
FIELD(ObjectStore, string_type_offset) \
FIELD(ObjectStore, type_type_offset) \
+ FIELD(ObjectStore, suspend_state_await_offset) \
+ FIELD(ObjectStore, suspend_state_handle_exception_offset) \
+ FIELD(ObjectStore, suspend_state_init_async_offset) \
+ FIELD(ObjectStore, suspend_state_init_async_star_offset) \
+ FIELD(ObjectStore, suspend_state_return_async_offset) \
+ FIELD(ObjectStore, suspend_state_return_async_not_future_offset) \
+ FIELD(ObjectStore, suspend_state_return_async_star_offset) \
+ FIELD(ObjectStore, suspend_state_yield_async_star_offset) \
FIELD(OneByteString, data_offset) \
FIELD(PointerBase, data_offset) \
FIELD(Pointer, type_arguments_offset) \
@@ -189,6 +198,7 @@
FIELD(String, hash_offset) \
FIELD(String, length_offset) \
FIELD(SubtypeTestCache, cache_offset) \
+ FIELD(SuspendState, FrameSizeGrowthGap) \
FIELD(SuspendState, error_callback_offset) \
FIELD(SuspendState, frame_size_offset) \
FIELD(SuspendState, function_data_offset) \
@@ -210,6 +220,7 @@
FIELD(Thread, allocate_object_slow_entry_point_offset) \
FIELD(Thread, allocate_object_slow_stub_offset) \
FIELD(Thread, api_top_scope_offset) \
+ FIELD(Thread, async_exception_handler_stub_offset) \
FIELD(Thread, auto_scope_native_wrapper_entry_point_offset) \
FIELD(Thread, bool_false_offset) \
FIELD(Thread, bool_true_offset) \
@@ -263,6 +274,10 @@
FIELD(Thread, null_cast_error_shared_without_fpu_regs_stub_offset) \
FIELD(Thread, range_error_shared_with_fpu_regs_stub_offset) \
FIELD(Thread, range_error_shared_without_fpu_regs_stub_offset) \
+ FIELD(Thread, resume_stub_offset) \
+ FIELD(Thread, return_async_not_future_stub_offset) \
+ FIELD(Thread, return_async_star_stub_offset) \
+ FIELD(Thread, return_async_stub_offset) \
\
FIELD(Thread, object_null_offset) \
FIELD(Thread, predefined_symbols_address_offset) \
@@ -459,8 +474,10 @@
#define JIT_OFFSETS_LIST(FIELD, ARRAY, SIZEOF, ARRAY_SIZEOF, PAYLOAD_SIZEOF, \
RANGE, CONSTANT) \
+ FIELD(Code, active_instructions_offset) \
FIELD(Function, usage_counter_offset) \
- FIELD(ICData, receivers_static_type_offset)
+ FIELD(ICData, receivers_static_type_offset) \
+ FIELD(SuspendState, frame_capacity_offset)
#define AOT_OFFSETS_LIST(FIELD, ARRAY, SIZEOF, ARRAY_SIZEOF, PAYLOAD_SIZEOF, \
RANGE, CONSTANT) \
diff --git a/runtime/vm/compiler/stub_code_compiler.cc b/runtime/vm/compiler/stub_code_compiler.cc
index bd7219f..213650a 100644
--- a/runtime/vm/compiler/stub_code_compiler.cc
+++ b/runtime/vm/compiler/stub_code_compiler.cc
@@ -1274,9 +1274,34 @@
compiler::target::kWordSize;
}
+static void CallDartCoreLibraryFunction(
+ Assembler* assembler,
+ intptr_t entry_point_offset_in_thread,
+ intptr_t function_offset_in_object_store,
+ bool uses_args_desc = false) {
+ if (FLAG_precompiled_mode) {
+ __ Call(Address(THR, entry_point_offset_in_thread));
+ } else {
+ __ LoadIsolateGroup(FUNCTION_REG);
+ __ LoadFromOffset(
+ FUNCTION_REG,
+ Address(FUNCTION_REG, target::IsolateGroup::object_store_offset()));
+ __ LoadFromOffset(FUNCTION_REG,
+ Address(FUNCTION_REG, function_offset_in_object_store));
+ __ LoadCompressedFieldFromOffset(CODE_REG, FUNCTION_REG,
+ target::Function::code_offset());
+ if (!uses_args_desc) {
+ // Load a GC-safe value for the arguments descriptor (unused but tagged).
+ __ LoadImmediate(ARGS_DESC_REG, 0);
+ }
+ __ Call(FieldAddress(FUNCTION_REG, target::Function::entry_point_offset()));
+ }
+}
+
void StubCodeCompiler::GenerateSuspendStub(
Assembler* assembler,
- intptr_t suspend_entry_point_offset) {
+ intptr_t suspend_entry_point_offset_in_thread,
+ intptr_t suspend_function_offset_in_object_store) {
const Register kArgument = SuspendStubABI::kArgumentReg;
const Register kTemp = SuspendStubABI::kTempReg;
const Register kFrameSize = SuspendStubABI::kFrameSizeReg;
@@ -1284,7 +1309,8 @@
const Register kFunctionData = SuspendStubABI::kFunctionDataReg;
const Register kSrcFrame = SuspendStubABI::kSrcFrameReg;
const Register kDstFrame = SuspendStubABI::kDstFrameReg;
- Label alloc_slow_case, alloc_done, init_done, old_gen_object, call_await;
+ Label alloc_slow_case, alloc_done, init_done, resize_suspend_state,
+ old_gen_object, call_dart;
#if defined(TARGET_ARCH_ARM) || defined(TARGET_ARCH_ARM64)
SPILLS_LR_TO_FRAME({}); // Simulate entering the caller (Dart) frame.
@@ -1300,10 +1326,29 @@
__ EnterStubFrame();
__ CompareClassId(kSuspendState, kSuspendStateCid, kTemp);
- __ BranchIf(EQUAL, &init_done);
- __ MoveRegister(kFunctionData, kSuspendState);
+ if (FLAG_precompiled_mode) {
+ __ BranchIf(EQUAL, &init_done);
+ } else {
+ Label alloc_suspend_state;
+ __ BranchIf(NOT_EQUAL, &alloc_suspend_state);
+
+ __ CompareWithMemoryValue(
+ kFrameSize,
+ FieldAddress(kSuspendState,
+ target::SuspendState::frame_capacity_offset()));
+ __ BranchIf(UNSIGNED_GREATER, &resize_suspend_state);
+
+ __ StoreToOffset(
+ kFrameSize,
+ FieldAddress(kSuspendState, target::SuspendState::frame_size_offset()));
+ __ Jump(&init_done);
+
+ __ Bind(&alloc_suspend_state);
+ }
+
__ Comment("Allocate SuspendState");
+ __ MoveRegister(kFunctionData, kSuspendState);
// Check for allocation tracing.
NOT_IN_PRODUCT(
@@ -1312,6 +1357,7 @@
// Compute the rounded instance size.
const intptr_t fixed_size_plus_alignment_padding =
(target::SuspendState::HeaderSize() +
+ target::SuspendState::FrameSizeGrowthGap() * target::kWordSize +
target::ObjectAlignment::kObjectAlignment - 1);
__ AddImmediate(kTemp, kFrameSize, fixed_size_plus_alignment_padding);
__ AndImmediate(kTemp, -target::ObjectAlignment::kObjectAlignment);
@@ -1329,6 +1375,16 @@
__ SubRegisters(kTemp, kSuspendState);
__ AddImmediate(kSuspendState, kHeapObjectTag);
+ if (!FLAG_precompiled_mode) {
+ // Use rounded object size to calculate and save frame capacity.
+ __ AddImmediate(kTemp, kTemp, -target::SuspendState::payload_offset());
+ __ StoreToOffset(
+ kTemp, FieldAddress(kSuspendState,
+ target::SuspendState::frame_capacity_offset()));
+ // Restore rounded object size.
+ __ AddImmediate(kTemp, kTemp, target::SuspendState::payload_offset());
+ }
+
// Calculate the size tag.
{
Label size_tag_overflow, done;
@@ -1381,8 +1437,8 @@
__ Bind(&alloc_done);
__ Comment("Save SuspendState to frame");
- __ LoadFromOffset(kTemp, Address(FPREG, kSavedCallerFpSlotFromFp *
- compiler::target::kWordSize));
+ __ LoadFromOffset(
+ kTemp, Address(FPREG, kSavedCallerFpSlotFromFp * target::kWordSize));
__ StoreToOffset(kSuspendState, Address(kTemp, SuspendStateFpOffset()));
__ Bind(&init_done);
@@ -1437,22 +1493,32 @@
}
#endif
- // Push arguments for _SuspendState._await* method.
+ // Push arguments for suspend Dart function.
__ PushRegistersInOrder({kSuspendState, kArgument});
// Write barrier.
__ BranchIfBit(kSuspendState, target::ObjectAlignment::kNewObjectBitPosition,
ZERO, &old_gen_object);
- __ Bind(&call_await);
- __ Comment("Call _SuspendState._await method");
- __ Call(Address(THR, suspend_entry_point_offset));
+ __ Bind(&call_dart);
+ __ Comment("Call suspend Dart function");
+ CallDartCoreLibraryFunction(assembler, suspend_entry_point_offset_in_thread,
+ suspend_function_offset_in_object_store);
__ LeaveStubFrame();
+
#if !defined(TARGET_ARCH_X64) && !defined(TARGET_ARCH_IA32)
- // Drop caller frame on all architectures except x86 which needs to maintain
- // call/return balance to avoid performance regressions.
+ // Drop caller frame on all architectures except x86 (X64/IA32) which
+ // needs to maintain call/return balance to avoid performance regressions.
__ LeaveDartFrame();
+#elif defined(TARGET_ARCH_X64)
+ // Restore PP in JIT mode on x64 as epilogue following SuspendStub call
+ // will only unwind frame and return.
+ if (!FLAG_precompiled_mode) {
+ __ LoadFromOffset(
+ PP, Address(FPREG, target::frame_layout.saved_caller_pp_from_fp *
+ target::kWordSize));
+ }
#endif
__ Ret();
@@ -1476,6 +1542,24 @@
__ PopRegister(kArgument); // Restore argument.
__ Jump(&alloc_done);
+ __ Bind(&resize_suspend_state);
+ __ Comment("Resize SuspendState");
+ // Save argument and frame size.
+ __ PushRegistersInOrder({kArgument, kFrameSize});
+ __ PushObject(NullObject()); // Make space on stack for the return value.
+ __ SmiTag(kFrameSize);
+ // Pass frame size and old suspend state to runtime entry.
+ __ PushRegistersInOrder({kFrameSize, kSuspendState});
+ // It's okay to call runtime for resizing SuspendState objects
+ // as it can only happen in the unoptimized code if expression
+ // stack grows between suspends, or once after OSR transition.
+ __ CallRuntime(kAllocateSuspendStateRuntimeEntry, 2);
+ __ Drop(2); // Drop arguments
+ __ PopRegister(kSuspendState); // Get result.
+ __ PopRegister(kFrameSize); // Restore frame size.
+ __ PopRegister(kArgument); // Restore argument.
+ __ Jump(&alloc_done);
+
__ Bind(&old_gen_object);
__ Comment("Old gen SuspendState slow case");
{
@@ -1492,30 +1576,35 @@
#endif
rt.Call(kEnsureRememberedAndMarkingDeferredRuntimeEntry, 2);
}
- __ Jump(&call_await);
+ __ Jump(&call_dart);
}
void StubCodeCompiler::GenerateAwaitStub(Assembler* assembler) {
GenerateSuspendStub(assembler,
- target::Thread::suspend_state_await_entry_point_offset());
+ target::Thread::suspend_state_await_entry_point_offset(),
+ target::ObjectStore::suspend_state_await_offset());
}
void StubCodeCompiler::GenerateYieldAsyncStarStub(Assembler* assembler) {
GenerateSuspendStub(
assembler,
- target::Thread::suspend_state_yield_async_star_entry_point_offset());
+ target::Thread::suspend_state_yield_async_star_entry_point_offset(),
+ target::ObjectStore::suspend_state_yield_async_star_offset());
}
void StubCodeCompiler::GenerateInitSuspendableFunctionStub(
Assembler* assembler,
- intptr_t init_entry_point_offset) {
+ intptr_t init_entry_point_offset_in_thread,
+ intptr_t init_function_offset_in_object_store) {
const Register kTypeArgs = InitSuspendableFunctionStubABI::kTypeArgsReg;
__ EnterStubFrame();
__ LoadObject(ARGS_DESC_REG, ArgumentsDescriptorBoxed(/*type_args_len=*/1,
/*num_arguments=*/0));
__ PushRegister(kTypeArgs);
- __ Call(Address(THR, init_entry_point_offset));
+ CallDartCoreLibraryFunction(assembler, init_entry_point_offset_in_thread,
+ init_function_offset_in_object_store,
+ /*uses_args_desc=*/true);
__ LeaveStubFrame();
// Set :suspend_state in the caller frame.
@@ -1526,13 +1615,15 @@
void StubCodeCompiler::GenerateInitAsyncStub(Assembler* assembler) {
GenerateInitSuspendableFunctionStub(
- assembler, target::Thread::suspend_state_init_async_entry_point_offset());
+ assembler, target::Thread::suspend_state_init_async_entry_point_offset(),
+ target::ObjectStore::suspend_state_init_async_offset());
}
void StubCodeCompiler::GenerateInitAsyncStarStub(Assembler* assembler) {
GenerateInitSuspendableFunctionStub(
assembler,
- target::Thread::suspend_state_init_async_star_entry_point_offset());
+ target::Thread::suspend_state_init_async_star_entry_point_offset(),
+ target::ObjectStore::suspend_state_init_async_star_offset());
}
void StubCodeCompiler::GenerateResumeStub(Assembler* assembler) {
@@ -1544,7 +1635,7 @@
const Register kResumePc = ResumeStubABI::kResumePcReg;
const Register kException = ResumeStubABI::kExceptionReg;
const Register kStackTrace = ResumeStubABI::kStackTraceReg;
- Label rethrow_exception;
+ Label call_runtime;
// Top of the stack on entry:
// ... [SuspendState] [value] [exception] [stackTrace] [ReturnAddress]
@@ -1563,6 +1654,15 @@
__ Breakpoint();
__ Bind(&okay);
}
+ {
+ Label okay;
+ __ LoadFromOffset(
+ kTemp, FieldAddress(kSuspendState, target::SuspendState::pc_offset()));
+ __ CompareImmediate(kTemp, 0);
+ __ BranchIf(NOT_EQUAL, &okay);
+ __ Breakpoint();
+ __ Bind(&okay);
+ }
#endif
__ LoadFromOffset(
@@ -1582,16 +1682,48 @@
__ Bind(&okay);
}
#endif
+ if (!FLAG_precompiled_mode) {
+ // Copy Code object (part of the fixed frame which is not copied below)
+ // and restore pool pointer.
+ __ MoveRegister(kTemp, kSuspendState);
+ __ AddRegisters(kTemp, kFrameSize);
+ __ LoadFromOffset(
+ CODE_REG,
+ Address(kTemp,
+ target::SuspendState::payload_offset() - kHeapObjectTag +
+ target::frame_layout.code_from_fp * target::kWordSize));
+ __ StoreToOffset(
+ CODE_REG,
+ Address(FPREG, target::frame_layout.code_from_fp * target::kWordSize));
+#if !defined(TARGET_ARCH_IA32)
+ __ LoadPoolPointer(PP);
+#endif
+ }
// Do not copy fixed frame between the first local and FP.
__ AddImmediate(kFrameSize, (target::frame_layout.first_local_from_fp + 1) *
target::kWordSize);
__ SubRegisters(SPREG, kFrameSize);
__ Comment("Copy frame from SuspendState");
+ intptr_t num_saved_regs = 0;
+ if (kSrcFrame == THR) {
+ __ PushRegister(THR);
+ ++num_saved_regs;
+ }
+ if (kDstFrame == CODE_REG) {
+ __ PushRegister(CODE_REG);
+ ++num_saved_regs;
+ }
__ AddImmediate(kSrcFrame, kSuspendState,
target::SuspendState::payload_offset() - kHeapObjectTag);
- __ MoveRegister(kDstFrame, SPREG);
+ __ AddImmediate(kDstFrame, SPREG, num_saved_regs * target::kWordSize);
__ CopyMemoryWords(kSrcFrame, kDstFrame, kFrameSize, kTemp);
+ if (kDstFrame == CODE_REG) {
+ __ PopRegister(CODE_REG);
+ }
+ if (kSrcFrame == THR) {
+ __ PopRegister(THR);
+ }
__ Comment("Transfer control");
@@ -1600,11 +1732,6 @@
__ StoreZero(FieldAddress(kSuspendState, target::SuspendState::pc_offset()),
kTemp);
- __ LoadFromOffset(kException,
- Address(FPREG, param_offset + 2 * target::kWordSize));
- __ CompareObject(kException, NullObject());
- __ BranchIf(NOT_EQUAL, &rethrow_exception);
-
#if defined(TARGET_ARCH_X64) || defined(TARGET_ARCH_IA32)
// Adjust resume PC to skip extra epilogue generated on x86
// right after the call to suspend stub in order to maintain
@@ -1612,41 +1739,78 @@
__ AddImmediate(kResumePc, SuspendStubABI::kResumePcDistance);
#endif
+ static_assert((kException != CODE_REG) && (kException != PP),
+ "should not interfere");
+ __ LoadFromOffset(kException,
+ Address(FPREG, param_offset + 2 * target::kWordSize));
+ __ CompareObject(kException, NullObject());
+ __ BranchIf(NOT_EQUAL, &call_runtime);
+
+ if (!FLAG_precompiled_mode) {
+ // Check if Code is disabled.
+ __ LoadFromOffset(
+ kTemp, FieldAddress(CODE_REG, target::Code::instructions_offset()));
+ __ CompareWithMemoryValue(
+ kTemp,
+ FieldAddress(CODE_REG, target::Code::active_instructions_offset()));
+ __ BranchIf(NOT_EQUAL, &call_runtime);
+
+#if !defined(PRODUCT)
+ // Check if there is a breakpoint at resumption.
+ __ LoadIsolate(kTemp);
+ __ LoadFromOffset(
+ kTemp,
+ Address(kTemp, target::Isolate::has_resumption_breakpoints_offset()),
+ kUnsignedByte);
+ __ CompareImmediate(kTemp, 0);
+ __ BranchIf(NOT_EQUAL, &call_runtime);
+#endif
+ }
+
__ LoadFromOffset(CallingConventions::kReturnReg,
Address(FPREG, param_offset + 3 * target::kWordSize));
__ Jump(kResumePc);
- __ Comment("Rethrow exception");
- __ Bind(&rethrow_exception);
+ __ Comment("Call runtime to throw exception or deopt");
+ __ Bind(&call_runtime);
__ LoadFromOffset(kStackTrace,
Address(FPREG, param_offset + 1 * target::kWordSize));
+ static_assert((kStackTrace != CODE_REG) && (kStackTrace != PP),
+ "should not interfere");
- // Adjust stack/LR/RA as if suspended Dart function called
+ // Set return address as if suspended Dart function called
// stub with kResumePc as a return address.
-#if defined(TARGET_ARCH_IA32) || defined(TARGET_ARCH_X64)
- __ PushRegister(kResumePc);
-#elif defined(TARGET_ARCH_ARM) || defined(TARGET_ARCH_ARM64)
- RESTORES_RETURN_ADDRESS_FROM_REGISTER_TO_LR(__ MoveRegister(LR, kResumePc));
-#elif defined(TARGET_ARCH_RISCV32) || defined(TARGET_ARCH_RISCV64)
- __ MoveRegister(RA, kResumePc);
-#else
-#error Unknown target
-#endif
+ __ SetReturnAddress(kResumePc);
+ if (!FLAG_precompiled_mode) {
+ __ LoadFromOffset(CODE_REG, THR, target::Thread::resume_stub_offset());
+ }
#if !defined(TARGET_ARCH_IA32)
__ set_constant_pool_allowed(false);
#endif
__ EnterStubFrame();
__ PushObject(NullObject()); // Make room for (unused) result.
__ PushRegistersInOrder({kException, kStackTrace});
- __ CallRuntime(kReThrowRuntimeEntry, /*argument_count=*/2);
- __ Breakpoint();
+ __ CallRuntime(kResumeFrameRuntimeEntry, /*argument_count=*/2);
+
+ if (FLAG_precompiled_mode) {
+ __ Breakpoint();
+ } else {
+ __ LeaveStubFrame();
+ __ LoadFromOffset(CallingConventions::kReturnReg,
+ Address(FPREG, param_offset + 3 * target::kWordSize));
+ // Lazy deoptimize.
+ __ Ret();
+ }
}
-void StubCodeCompiler::GenerateReturnStub(Assembler* assembler,
- intptr_t return_entry_point_offset) {
+void StubCodeCompiler::GenerateReturnStub(
+ Assembler* assembler,
+ intptr_t return_entry_point_offset_in_thread,
+ intptr_t return_function_offset_in_object_store,
+ intptr_t return_stub_offset_in_thread) {
const Register kSuspendState = ReturnStubABI::kSuspendStateReg;
#if defined(TARGET_ARCH_ARM) || defined(TARGET_ARCH_ARM64)
@@ -1654,11 +1818,23 @@
#endif
__ LoadFromOffset(kSuspendState, Address(FPREG, SuspendStateFpOffset()));
+#ifdef DEBUG
+ {
+ Label okay;
+ __ CompareObject(kSuspendState, NullObject());
+ __ BranchIf(NOT_EQUAL, &okay);
+ __ Breakpoint();
+ __ Bind(&okay);
+ }
+#endif
__ LeaveDartFrame();
-
+ if (!FLAG_precompiled_mode) {
+ __ LoadFromOffset(CODE_REG, THR, return_stub_offset_in_thread);
+ }
__ EnterStubFrame();
__ PushRegistersInOrder({kSuspendState, CallingConventions::kReturnReg});
- __ Call(Address(THR, return_entry_point_offset));
+ CallDartCoreLibraryFunction(assembler, return_entry_point_offset_in_thread,
+ return_function_offset_in_object_store);
__ LeaveStubFrame();
__ Ret();
}
@@ -1666,20 +1842,26 @@
void StubCodeCompiler::GenerateReturnAsyncStub(Assembler* assembler) {
GenerateReturnStub(
assembler,
- target::Thread::suspend_state_return_async_entry_point_offset());
+ target::Thread::suspend_state_return_async_entry_point_offset(),
+ target::ObjectStore::suspend_state_return_async_offset(),
+ target::Thread::return_async_stub_offset());
}
void StubCodeCompiler::GenerateReturnAsyncNotFutureStub(Assembler* assembler) {
GenerateReturnStub(
assembler,
target::Thread::
- suspend_state_return_async_not_future_entry_point_offset());
+ suspend_state_return_async_not_future_entry_point_offset(),
+ target::ObjectStore::suspend_state_return_async_not_future_offset(),
+ target::Thread::return_async_not_future_stub_offset());
}
void StubCodeCompiler::GenerateReturnAsyncStarStub(Assembler* assembler) {
GenerateReturnStub(
assembler,
- target::Thread::suspend_state_return_async_star_entry_point_offset());
+ target::Thread::suspend_state_return_async_star_entry_point_offset(),
+ target::ObjectStore::suspend_state_return_async_star_offset(),
+ target::Thread::return_async_star_stub_offset());
}
void StubCodeCompiler::GenerateAsyncExceptionHandlerStub(Assembler* assembler) {
@@ -1701,12 +1883,17 @@
__ BranchIf(EQUAL, &rethrow_exception);
__ LeaveDartFrame();
+ if (!FLAG_precompiled_mode) {
+ __ LoadFromOffset(CODE_REG, THR,
+ target::Thread::async_exception_handler_stub_offset());
+ }
__ EnterStubFrame();
__ PushRegistersInOrder(
{kSuspendState, kExceptionObjectReg, kStackTraceObjectReg});
- __ Call(Address(
- THR,
- target::Thread::suspend_state_handle_exception_entry_point_offset()));
+ CallDartCoreLibraryFunction(
+ assembler,
+ target::Thread::suspend_state_handle_exception_entry_point_offset(),
+ target::ObjectStore::suspend_state_handle_exception_offset());
__ LeaveStubFrame();
__ Ret();
@@ -1717,6 +1904,10 @@
__ Comment("Rethrow exception");
__ Bind(&rethrow_exception);
__ LeaveDartFrame();
+ if (!FLAG_precompiled_mode) {
+ __ LoadFromOffset(CODE_REG, THR,
+ target::Thread::async_exception_handler_stub_offset());
+ }
__ EnterStubFrame();
__ PushObject(NullObject()); // Make room for (unused) result.
__ PushRegistersInOrder({kExceptionObjectReg, kStackTraceObjectReg});
diff --git a/runtime/vm/compiler/stub_code_compiler.h b/runtime/vm/compiler/stub_code_compiler.h
index 7cd39e1..e4da7fa 100644
--- a/runtime/vm/compiler/stub_code_compiler.h
+++ b/runtime/vm/compiler/stub_code_compiler.h
@@ -199,13 +199,19 @@
static void GenerateRangeError(Assembler* assembler, bool with_fpu_regs);
- static void GenerateSuspendStub(Assembler* assembler,
- intptr_t suspend_entry_point_offset);
+ static void GenerateSuspendStub(
+ Assembler* assembler,
+ intptr_t suspend_entry_point_offset_in_thread,
+ intptr_t suspend_function_offset_in_object_store);
static void GenerateInitSuspendableFunctionStub(
Assembler* assembler,
- intptr_t init_entry_point_offset);
- static void GenerateReturnStub(Assembler* assembler,
- intptr_t return_entry_point_offset);
+ intptr_t init_entry_point_offset_in_thread,
+ intptr_t init_function_offset_in_object_store);
+ static void GenerateReturnStub(
+ Assembler* assembler,
+ intptr_t return_entry_point_offset_in_thread,
+ intptr_t return_function_offset_in_object_store,
+ intptr_t return_stub_offset_in_thread);
};
} // namespace compiler
diff --git a/runtime/vm/constants_arm.h b/runtime/vm/constants_arm.h
index 7b0d4ce..224f969 100644
--- a/runtime/vm/constants_arm.h
+++ b/runtime/vm/constants_arm.h
@@ -560,6 +560,7 @@
// Registers for control transfer.
// (the 2nd part, can reuse registers from the 1st part)
static const Register kResumePcReg = R1;
+ // Can also reuse kSuspendStateReg but should not conflict with CODE_REG/PP.
static const Register kExceptionReg = R3;
static const Register kStackTraceReg = R4;
};
diff --git a/runtime/vm/constants_arm64.h b/runtime/vm/constants_arm64.h
index 0cd27b6..fea118e 100644
--- a/runtime/vm/constants_arm64.h
+++ b/runtime/vm/constants_arm64.h
@@ -394,6 +394,7 @@
// Registers for control transfer.
// (the 2nd part, can reuse registers from the 1st part)
static const Register kResumePcReg = R1;
+ // Can also reuse kSuspendStateReg but should not conflict with CODE_REG/PP.
static const Register kExceptionReg = R3;
static const Register kStackTraceReg = R4;
};
diff --git a/runtime/vm/constants_ia32.h b/runtime/vm/constants_ia32.h
index 47f2797..d141285 100644
--- a/runtime/vm/constants_ia32.h
+++ b/runtime/vm/constants_ia32.h
@@ -276,7 +276,7 @@
// Number of bytes to skip after
// suspend stub return address in order to resume.
// IA32: mov esp, ebp; pop ebp; ret
- static const intptr_t kResumePcDistance = 5;
+ static const intptr_t kResumePcDistance = 4;
};
// ABI for InitSuspendableFunctionStub (InitAsyncStub, InitAsyncStarStub).
@@ -290,13 +290,16 @@
static const Register kTempReg = EDX;
// Registers for the frame copying (the 1st part).
static const Register kFrameSizeReg = ECX;
+ // Can reuse THR.
static const Register kSrcFrameReg = ESI;
+ // Can reuse CODE_REG.
static const Register kDstFrameReg = EDI;
// Registers for control transfer.
// (the 2nd part, can reuse registers from the 1st part)
static const Register kResumePcReg = ECX;
- static const Register kExceptionReg = ESI;
- static const Register kStackTraceReg = EDI;
+ // Can also reuse kSuspendStateReg but should not conflict with CODE_REG.
+ static const Register kExceptionReg = EAX;
+ static const Register kStackTraceReg = EBX;
};
// ABI for ReturnStub (ReturnAsyncStub, ReturnAsyncNotFutureStub,
diff --git a/runtime/vm/constants_riscv.h b/runtime/vm/constants_riscv.h
index 435c5f8..c18f413 100644
--- a/runtime/vm/constants_riscv.h
+++ b/runtime/vm/constants_riscv.h
@@ -404,6 +404,7 @@
// Registers for control transfer.
// (the 2nd part, can reuse registers from the 1st part)
static const Register kResumePcReg = T2;
+ // Can also reuse kSuspendStateReg but should not conflict with CODE_REG/PP.
static const Register kExceptionReg = T3;
static const Register kStackTraceReg = T4;
};
diff --git a/runtime/vm/constants_x64.h b/runtime/vm/constants_x64.h
index c2a1162..119f08c 100644
--- a/runtime/vm/constants_x64.h
+++ b/runtime/vm/constants_x64.h
@@ -368,6 +368,7 @@
// Registers for control transfer.
// (the 2nd part, can reuse registers from the 1st part)
static const Register kResumePcReg = RCX;
+ // Can also reuse kSuspendStateReg but should not conflict with CODE_REG/PP.
static const Register kExceptionReg = RSI;
static const Register kStackTraceReg = RDI;
};
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
index 4f03fb7a..f8b05d2 100644
--- a/runtime/vm/dart_api_impl.cc
+++ b/runtime/vm/dart_api_impl.cc
@@ -6728,24 +6728,12 @@
DARTSCOPE(Thread::Current());
API_TIMELINE_DURATION(T);
- const GrowableObjectArray& result =
- GrowableObjectArray::Handle(Z, GrowableObjectArray::New());
- const GrowableObjectArray& libs = GrowableObjectArray::Handle(
- Z, T->isolate_group()->object_store()->libraries());
- Library& lib = Library::Handle(Z);
- LoadingUnit& unit = LoadingUnit::Handle(Z);
- String& uri = String::Handle(Z);
- for (intptr_t i = 0; i < libs.Length(); i++) {
- lib ^= libs.At(i);
- unit = lib.loading_unit();
- if (unit.IsNull() || (unit.id() != loading_unit_id)) {
- continue;
- }
- uri = lib.url();
- result.Add(uri);
+ const Array& loading_units =
+ Array::Handle(Z, T->isolate_group()->object_store()->loading_unit_uris());
+ if (loading_unit_id >= 0 && loading_unit_id < loading_units.Length()) {
+ return Api::NewHandle(T, loading_units.At(loading_unit_id));
}
-
- return Api::NewHandle(T, Array::MakeFixedLength(result));
+ return Api::NewError("Invalid loading_unit_id");
#endif
}
diff --git a/runtime/vm/debugger.cc b/runtime/vm/debugger.cc
index 4e4f9a1..1a83328 100644
--- a/runtime/vm/debugger.cc
+++ b/runtime/vm/debugger.cc
@@ -282,7 +282,8 @@
desc_indices_(8),
pc_desc_(PcDescriptors::ZoneHandle()) {}
-ActivationFrame::ActivationFrame(const Closure& async_activation)
+ActivationFrame::ActivationFrame(const Closure& async_activation,
+ CallerClosureFinder* caller_closure_finder)
: pc_(0),
fp_(0),
sp_(0),
@@ -306,6 +307,17 @@
pc_desc_(PcDescriptors::ZoneHandle()) {
// Extract the function and the code from the asynchronous activation.
function_ = async_activation.function();
+ if (caller_closure_finder->IsCompactAsyncCallback(function_)) {
+ const auto& suspend_state = SuspendState::Handle(
+ caller_closure_finder->GetSuspendStateFromAsyncCallback(
+ async_activation));
+ if (suspend_state.pc() != 0) {
+ pc_ = suspend_state.pc();
+ code_ = suspend_state.GetCodeObject();
+ function_ = code_.function();
+ return;
+ }
+ }
// Force-optimize functions should not be debuggable.
ASSERT(!function_.ForceOptimize());
function_.EnsureHasCompiledUnoptimizedCode();
@@ -752,16 +764,24 @@
ObjectPtr ActivationFrame::GetAsyncAwaiter(
CallerClosureFinder* caller_closure_finder) {
- if (fp() != 0 && !function_.IsNull() &&
- (function_.IsAsyncClosure() || function_.IsAsyncGenClosure())) {
- // Look up caller's closure on the stack.
- ObjectPtr* last_caller_obj = reinterpret_cast<ObjectPtr*>(GetCallerSp());
- Closure& closure = Closure::Handle();
- closure = StackTraceUtils::FindClosureInFrame(last_caller_obj, function_);
+ if (fp() != 0 && !function_.IsNull()) {
+ if (function_.IsCompactAsyncFunction() ||
+ function_.IsCompactAsyncStarFunction()) {
+ const auto& suspend_state = Object::Handle(GetSuspendStateVar());
+ if (suspend_state.IsSuspendState()) {
+ return caller_closure_finder->FindCallerFromSuspendState(
+ SuspendState::Cast(suspend_state));
+ }
+ } else if (function_.IsAsyncClosure() || function_.IsAsyncGenClosure()) {
+ // Look up caller's closure on the stack.
+ ObjectPtr* last_caller_obj = reinterpret_cast<ObjectPtr*>(GetCallerSp());
+ Closure& closure = Closure::Handle();
+ closure = StackTraceUtils::FindClosureInFrame(last_caller_obj, function_);
- if (!closure.IsNull() && caller_closure_finder->IsRunningAsync(closure)) {
- closure = caller_closure_finder->FindCaller(closure);
- return closure.ptr();
+ if (!closure.IsNull() && caller_closure_finder->IsRunningAsync(closure)) {
+ closure = caller_closure_finder->FindCaller(closure);
+ return closure.ptr();
+ }
}
}
@@ -774,16 +794,13 @@
return false;
}
intptr_t try_index = TryIndex();
- if (try_index < 0) {
+ const auto& handlers = ExceptionHandlers::Handle(code().exception_handlers());
+ ASSERT(!handlers.IsNull());
+ if ((try_index < 0) && !handlers.has_async_handler()) {
return false;
}
- ExceptionHandlers& handlers = ExceptionHandlers::Handle();
Array& handled_types = Array::Handle();
AbstractType& type = Type::Handle();
- const bool is_async =
- function().IsAsyncClosure() || function().IsAsyncGenClosure();
- handlers = code().exception_handlers();
- ASSERT(!handlers.IsNull());
intptr_t num_handlers_checked = 0;
while (try_index != kInvalidTryIndex) {
// Detect circles in the exception handler data.
@@ -812,7 +829,8 @@
}
// Async functions might have indirect exception handlers in the form of
// `Future.catchError`. Check the Closure's _FutureListeners.
- if (fp() != 0 && is_async) {
+ if ((fp() != 0) &&
+ (function().IsAsyncClosure() || function().IsAsyncGenClosure())) {
CallerClosureFinder caller_closure_finder(Thread::Current()->zone());
ObjectPtr* last_caller_obj = reinterpret_cast<ObjectPtr*>(GetCallerSp());
Closure& closure = Closure::Handle(
@@ -825,6 +843,17 @@
futureOrListener =
caller_closure_finder.GetFutureFutureListener(futureOrListener);
return caller_closure_finder.HasCatchError(futureOrListener);
+ } else if ((fp() != 0) && function().IsCompactAsyncFunction()) {
+ CallerClosureFinder caller_closure_finder(Thread::Current()->zone());
+ auto& suspend_state = Object::Handle(GetSuspendStateVar());
+ if (!suspend_state.IsSuspendState()) {
+ return false;
+ }
+ Object& futureOrListener =
+ Object::Handle(SuspendState::Cast(suspend_state).function_data());
+ futureOrListener =
+ caller_closure_finder.GetFutureFutureListener(futureOrListener);
+ return caller_closure_finder.HasCatchError(futureOrListener);
}
return false;
@@ -1074,6 +1103,19 @@
return Closure::Cast(param).ptr();
}
+ObjectPtr ActivationFrame::GetSuspendStateVar() {
+ ASSERT(function().IsSuspendableFunction());
+ return GetStackVar(VariableIndex(SuspendState::kSuspendStateVarIndex));
+}
+
+ObjectPtr ActivationFrame::GetSuspendableFunctionData() {
+ Object& suspend_state = Object::Handle(GetSuspendStateVar());
+ if (suspend_state.IsSuspendState()) {
+ return SuspendState::Cast(suspend_state).function_data();
+ }
+ return suspend_state.ptr();
+}
+
ObjectPtr ActivationFrame::GetStackVar(VariableIndex variable_index) {
const intptr_t slot_index =
runtime_frame_layout.FrameSlotForVariableIndex(variable_index.value());
@@ -1660,6 +1702,13 @@
}
return false;
}
+ if (top_frame->function().IsCompactAsyncFunction() ||
+ top_frame->function().IsCompactAsyncStarFunction()) {
+ const auto& function_data =
+ Object::Handle(top_frame->GetSuspendableFunctionData());
+ SetBreakpointAtResumption(function_data);
+ return true;
+ }
Object& closure = Object::Handle(top_frame->GetAsyncOperation());
ASSERT(!closure.IsNull());
ASSERT(closure.IsInstance());
@@ -2057,6 +2106,20 @@
if (caller_closure_finder.IsRunningAsync(closure)) {
break;
}
+ } else if (function.IsCompactAsyncFunction() ||
+ function.IsCompactAsyncStarFunction()) {
+ ActivationFrame* activation = CollectDartFrame(
+ isolate, frame->pc(), frame, code, Object::null_array(), 0,
+ ActivationFrame::kAsyncActivation);
+ ASSERT(activation != nullptr);
+ stack_trace->AddActivation(activation);
+ stack_has_async_function = true;
+ // Grab the awaiter.
+ async_activation ^= activation->GetAsyncAwaiter(&caller_closure_finder);
+ // Bail if we've reach the end of sync execution stack.
+ if (Object::Handle(activation->GetSuspendStateVar()).IsSuspendState()) {
+ break;
+ }
} else {
stack_trace->AddActivation(CollectDartFrame(
isolate, frame->pc(), frame, code, Object::null_array(), 0));
@@ -2094,7 +2157,9 @@
}
intptr_t deopt_frame_offset = it.GetDeoptFpOffset();
- if (function.IsAsyncClosure() || function.IsAsyncGenClosure()) {
+ if (function.IsAsyncClosure() || function.IsAsyncGenClosure() ||
+ function.IsCompactAsyncFunction() ||
+ function.IsCompactAsyncStarFunction()) {
ActivationFrame* activation = CollectDartFrame(
isolate, it.pc(), frame, inlined_code, deopt_frame,
deopt_frame_offset, ActivationFrame::kAsyncActivation);
@@ -2125,7 +2190,8 @@
// Append the awaiter return call stack.
while (!async_activation.IsNull() &&
async_activation.context() != Object::null()) {
- ActivationFrame* activation = new (zone) ActivationFrame(async_activation);
+ ActivationFrame* activation =
+ new (zone) ActivationFrame(async_activation, &caller_closure_finder);
if (activation->function().IsAsyncClosure() ||
activation->function().IsAsyncGenClosure()) {
activation->ExtractTokenPositionFromAsyncClosure();
@@ -3107,6 +3173,39 @@
return NULL;
}
+void Debugger::SetBreakpointAtResumption(const Object& function_data) {
+ ASSERT(!function_data.IsNull());
+ ASSERT(function_data.IsInstance());
+ breakpoints_at_resumption_.Add(function_data.ptr());
+ isolate_->set_has_resumption_breakpoints(true);
+}
+
+void Debugger::ResumptionBreakpoint() {
+ ASSERT(!breakpoints_at_resumption_.is_empty());
+ ASSERT(isolate_->has_resumption_breakpoints());
+
+ ActivationFrame* top_frame = TopDartFrame();
+ ASSERT(top_frame->function().IsSuspendableFunction());
+ const auto& function_data =
+ Object::Handle(top_frame->GetSuspendableFunctionData());
+
+ for (intptr_t i = 0, n = breakpoints_at_resumption_.length(); i < n; ++i) {
+ if (breakpoints_at_resumption_[i] == function_data.ptr()) {
+ breakpoints_at_resumption_.RemoveAt(i);
+ if (breakpoints_at_resumption_.is_empty()) {
+ isolate_->set_has_resumption_breakpoints(false);
+ }
+ if (FLAG_verbose_debug) {
+ OS::PrintErr(
+ "ResumptionBreakpoint - hit a breakpoint, continue single "
+ "stepping\n");
+ }
+ EnterSingleStepMode();
+ return;
+ }
+ }
+}
+
Breakpoint* Debugger::SetBreakpointAtLine(const String& script_url,
intptr_t line_number) {
// Prevent future tests from calling this function in the wrong
@@ -3352,6 +3451,9 @@
loc = loc->next();
}
visitor->VisitPointer(reinterpret_cast<ObjectPtr*>(&top_frame_awaiter_));
+ for (intptr_t i = 0, n = breakpoints_at_resumption_.length(); i < n; ++i) {
+ visitor->VisitPointer(&breakpoints_at_resumption_[i]);
+ }
}
void Debugger::Pause(ServiceEvent* event) {
@@ -3487,7 +3589,9 @@
} else if (resume_action_ == kStepOut) {
if (FLAG_async_debugger) {
if (stack_trace->FrameAt(0)->function().IsAsyncClosure() ||
- stack_trace->FrameAt(0)->function().IsAsyncGenClosure()) {
+ stack_trace->FrameAt(0)->function().IsAsyncGenClosure() ||
+ stack_trace->FrameAt(0)->function().IsCompactAsyncFunction() ||
+ stack_trace->FrameAt(0)->function().IsCompactAsyncStarFunction()) {
CallerClosureFinder caller_closure_finder(Thread::Current()->zone());
// Request to step out of an async/async* closure.
const Object& async_op = Object::Handle(
@@ -3880,25 +3984,29 @@
static bool IsAtAsyncJump(ActivationFrame* top_frame) {
Zone* zone = Thread::Current()->zone();
- Object& closure_or_null =
- Object::Handle(zone, top_frame->GetAsyncOperation());
- if (!closure_or_null.IsNull()) {
+ if (!top_frame->function().IsCompactAsyncFunction() &&
+ !top_frame->function().IsCompactAsyncStarFunction()) {
+ Object& closure_or_null =
+ Object::Handle(zone, top_frame->GetAsyncOperation());
+ if (closure_or_null.IsNull()) {
+ return false;
+ }
ASSERT(top_frame->function().IsAsyncClosure() ||
top_frame->function().IsAsyncGenClosure());
ASSERT(closure_or_null.IsInstance());
ASSERT(Instance::Cast(closure_or_null).IsClosure());
- const auto& pc_descriptors =
- PcDescriptors::Handle(zone, top_frame->code().pc_descriptors());
- if (pc_descriptors.IsNull()) {
- return false;
- }
- const TokenPosition looking_for = top_frame->TokenPos();
- PcDescriptors::Iterator it(pc_descriptors, UntaggedPcDescriptors::kOther);
- while (it.MoveNext()) {
- if (it.TokenPos() == looking_for &&
- it.YieldIndex() != UntaggedPcDescriptors::kInvalidYieldIndex) {
- return true;
- }
+ }
+ const auto& pc_descriptors =
+ PcDescriptors::Handle(zone, top_frame->code().pc_descriptors());
+ if (pc_descriptors.IsNull()) {
+ return false;
+ }
+ const TokenPosition looking_for = top_frame->TokenPos();
+ PcDescriptors::Iterator it(pc_descriptors, UntaggedPcDescriptors::kOther);
+ while (it.MoveNext()) {
+ if (it.TokenPos() == looking_for &&
+ it.YieldIndex() != UntaggedPcDescriptors::kInvalidYieldIndex) {
+ return true;
}
}
return false;
@@ -3964,7 +4072,8 @@
if (FLAG_lazy_async_stacks) {
// async and async* functions always contain synthetic async_ops.
if ((frame->function().IsAsyncFunction() ||
- frame->function().IsAsyncGenerator())) {
+ frame->function().IsAsyncGenerator()) &&
+ !frame->function().IsSuspendableFunction()) {
ASSERT(!frame->GetSavedCurrentContext().IsNull());
ASSERT(frame->GetSavedCurrentContext().num_variables() >
Context::kAsyncFutureIndex);
@@ -4003,6 +4112,14 @@
return Error::null();
}
+ // TODO(dartbug.com/48378): Consider aligning async/async* functions
+ // with regular function wrt the first stop in the function prologue.
+ if ((frame->function().IsCompactAsyncFunction() ||
+ frame->function().IsCompactAsyncStarFunction()) &&
+ frame->GetSuspendStateVar() == Object::null()) {
+ return Error::null();
+ }
+
// We are stopping in this frame at the token pos.
last_stepping_fp_ = frame->fp();
last_stepping_pos_ = frame->TokenPos();
@@ -4612,7 +4729,18 @@
}
void Debugger::AsyncStepInto(const Closure& async_op) {
- SetBreakpointAtActivation(async_op, true);
+ Zone* zone = Thread::Current()->zone();
+ CallerClosureFinder caller_closure_finder(zone);
+ if (caller_closure_finder.IsCompactAsyncCallback(
+ Function::Handle(zone, async_op.function()))) {
+ const auto& suspend_state = SuspendState::Handle(
+ zone, caller_closure_finder.GetSuspendStateFromAsyncCallback(async_op));
+ const auto& function_data =
+ Object::Handle(zone, suspend_state.function_data());
+ SetBreakpointAtResumption(function_data);
+ } else {
+ SetBreakpointAtActivation(async_op, true);
+ }
Continue();
}
diff --git a/runtime/vm/debugger.h b/runtime/vm/debugger.h
index 0c95bd3..47e701f 100644
--- a/runtime/vm/debugger.h
+++ b/runtime/vm/debugger.h
@@ -326,7 +326,8 @@
explicit ActivationFrame(Kind kind);
- explicit ActivationFrame(const Closure& async_activation);
+ ActivationFrame(const Closure& async_activation,
+ CallerClosureFinder* caller_closure_finder);
uword pc() const { return pc_; }
uword fp() const { return fp_; }
@@ -388,6 +389,8 @@
const Context& GetSavedCurrentContext();
ObjectPtr GetAsyncOperation();
+ ObjectPtr GetSuspendStateVar();
+ ObjectPtr GetSuspendableFunctionData();
TypeArgumentsPtr BuildParameters(
const GrowableObjectArray& param_names,
@@ -816,6 +819,13 @@
// Callback to the debugger to continue frame rewind, post-deoptimization.
void RewindPostDeopt();
+ // Sets breakpoint at resumption of a suspendable function
+ // with given function data (such as _Future or _AsyncStarStreamController).
+ void SetBreakpointAtResumption(const Object& function_data);
+
+ // Check breakpoints at frame resumption. Called from generated code.
+ void ResumptionBreakpoint();
+
private:
ErrorPtr PauseRequest(ServiceEvent::EventKind kind);
@@ -968,6 +978,10 @@
Dart_ExceptionPauseInfo exc_pause_info_;
+ // Holds function data corresponding to suspendable
+ // function which should be stopped when resumed.
+ MallocGrowableArray<ObjectPtr> breakpoints_at_resumption_;
+
friend class Isolate;
friend class BreakpointLocation;
DISALLOW_COPY_AND_ASSIGN(Debugger);
diff --git a/runtime/vm/exceptions.cc b/runtime/vm/exceptions.cc
index 8d08c18..23e9aa2 100644
--- a/runtime/vm/exceptions.cc
+++ b/runtime/vm/exceptions.cc
@@ -580,14 +580,15 @@
uword frame_pointer,
const Object& exception_object,
const Object& stacktrace_object) {
+ bool clear_deopt = false;
uword remapped_pc = thread->pending_deopts().RemapExceptionPCForDeopt(
- program_counter, frame_pointer);
+ program_counter, frame_pointer, &clear_deopt);
thread->set_active_exception(exception_object);
thread->set_active_stacktrace(stacktrace_object);
thread->set_resume_pc(remapped_pc);
uword run_exception_pc = StubCode::RunExceptionHandler().EntryPoint();
Exceptions::JumpToFrame(thread, run_exception_pc, stack_pointer,
- frame_pointer, false /* do not clear deopt */);
+ frame_pointer, clear_deopt);
}
NO_SANITIZE_SAFE_STACK // This function manipulates the safestack pointer.
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h
index ffb8a64..7aec9f6 100644
--- a/runtime/vm/isolate.h
+++ b/runtime/vm/isolate.h
@@ -1150,6 +1150,16 @@
return OFFSET_OF(Isolate, single_step_);
}
+ void set_has_resumption_breakpoints(bool value) {
+ has_resumption_breakpoints_ = value;
+ }
+ bool has_resumption_breakpoints() const {
+ return has_resumption_breakpoints_;
+ }
+ static intptr_t has_resumption_breakpoints_offset() {
+ return OFFSET_OF(Isolate, has_resumption_breakpoints_);
+ }
+
bool ResumeRequest() const { return LoadIsolateFlagsBit<ResumeRequestBit>(); }
// Lets the embedder know that a service message resulted in a resume request.
void SetResumeRequest() {
@@ -1554,6 +1564,7 @@
// shutdown to prevent usage of dangling pointers.
GrowableObjectArrayPtr finalizers_;
bool single_step_ = false;
+ bool has_resumption_breakpoints_ = false;
bool is_system_isolate_ = false;
// End accessed from generated code.
diff --git a/runtime/vm/isolate_reload.cc b/runtime/vm/isolate_reload.cc
index 1386624..f182dce 100644
--- a/runtime/vm/isolate_reload.cc
+++ b/runtime/vm/isolate_reload.cc
@@ -1882,11 +1882,13 @@
GrowableArray<const Function*>* functions,
GrowableArray<const KernelProgramInfo*>* kernel_infos,
GrowableArray<const Field*>* fields,
+ GrowableArray<const SuspendState*>* suspend_states,
GrowableArray<const Instance*>* instances)
: zone_(zone),
functions_(functions),
kernel_infos_(kernel_infos),
fields_(fields),
+ suspend_states_(suspend_states),
instances_(instances) {}
virtual ~InvalidationCollector() {}
@@ -1904,6 +1906,12 @@
zone_, static_cast<KernelProgramInfoPtr>(obj)));
} else if (cid == kFieldCid) {
fields_->Add(&Field::Handle(zone_, static_cast<FieldPtr>(obj)));
+ } else if (cid == kSuspendStateCid) {
+ const auto& suspend_state =
+ SuspendState::Handle(zone_, static_cast<SuspendStatePtr>(obj));
+ if (suspend_state.pc() != 0) {
+ suspend_states_->Add(&suspend_state);
+ }
} else if (cid > kNumPredefinedCids) {
instances_->Add(&Instance::Handle(zone_, static_cast<InstancePtr>(obj)));
}
@@ -1914,6 +1922,7 @@
GrowableArray<const Function*>* const functions_;
GrowableArray<const KernelProgramInfo*>* const kernel_infos_;
GrowableArray<const Field*>* const fields_;
+ GrowableArray<const SuspendState*>* const suspend_states_;
GrowableArray<const Instance*>* const instances_;
};
@@ -1928,16 +1937,18 @@
GrowableArray<const Function*> functions(4 * KB);
GrowableArray<const KernelProgramInfo*> kernel_infos(KB);
GrowableArray<const Field*> fields(4 * KB);
+ GrowableArray<const SuspendState*> suspend_states(4 * KB);
GrowableArray<const Instance*> instances(4 * KB);
{
HeapIterationScope iteration(thread);
InvalidationCollector visitor(zone, &functions, &kernel_infos, &fields,
- &instances);
+ &suspend_states, &instances);
iteration.IterateObjects(&visitor);
}
InvalidateKernelInfos(zone, kernel_infos);
+ InvalidateSuspendStates(zone, suspend_states);
InvalidateFunctions(zone, functions);
InvalidateFields(zone, fields, instances);
}
@@ -2028,6 +2039,55 @@
}
}
+void ProgramReloadContext::InvalidateSuspendStates(
+ Zone* zone,
+ const GrowableArray<const SuspendState*>& suspend_states) {
+ TIMELINE_SCOPE(InvalidateSuspendStates);
+ auto thread = Thread::Current();
+ HANDLESCOPE(thread);
+
+ CallSiteResetter resetter(zone);
+ Code& code = Code::Handle(zone);
+ Function& function = Function::Handle(zone);
+
+ SafepointWriteRwLocker ml(thread, thread->isolate_group()->program_lock());
+ for (intptr_t i = 0, n = suspend_states.length(); i < n; ++i) {
+ const SuspendState& suspend_state = *suspend_states[i];
+ ASSERT(suspend_state.pc() != 0);
+ code = suspend_state.GetCodeObject();
+ ASSERT(!code.IsNull());
+ if (code.is_optimized() && !code.is_force_optimized()) {
+ function = code.function();
+ // Before disabling [code], function needs to
+ // switch to unoptimized code first.
+ function.SwitchToLazyCompiledUnoptimizedCode();
+ // Disable [code] in order to trigger lazy deoptimization.
+ // Unless [code] is compiled for OSR, it may be already
+ // disabled in SwitchToLazyCompiledUnoptimizedCode.
+ if (!code.IsDisabled()) {
+ code.DisableDartCode();
+ }
+ // Reset switchable calls and caches for unoptimized
+ // code (if any), as it is going to be used to continue
+ // execution of the suspended function.
+ code = function.unoptimized_code();
+ if (!code.IsNull()) {
+ resetter.ResetSwitchableCalls(code);
+ resetter.ResetCaches(code);
+ }
+ } else {
+ function = code.function();
+ // ResetSwitchableCalls uses ICData array, which
+ // can be cleared along with the code in InvalidateFunctions
+ // during previous hot reloads.
+ // Rebuild an unoptimized code in order to recreate ICData array.
+ function.EnsureHasCompiledUnoptimizedCode();
+ resetter.ResetSwitchableCalls(code);
+ resetter.ResetCaches(code);
+ }
+ }
+}
+
// Finds fields that are initialized or have a value that does not conform to
// the field's static type, setting Field::needs_load_guard(). Accessors for
// such fields are compiled with additional checks to handle lazy initialization
diff --git a/runtime/vm/isolate_reload.h b/runtime/vm/isolate_reload.h
index 939f512..07978e4 100644
--- a/runtime/vm/isolate_reload.h
+++ b/runtime/vm/isolate_reload.h
@@ -281,7 +281,6 @@
friend class Class; // AddStaticFieldMapping, AddEnumBecomeMapping.
friend class Library;
friend class ObjectLocator;
- friend class MarkFunctionsForRecompilation; // IsDirty.
friend class ReasonForCancelling;
friend class ProgramReloadContext;
friend class IsolateGroup; // GetClassSizeForHeapWalkAt
@@ -356,6 +355,9 @@
const GrowableArray<const KernelProgramInfo*>& kernel_infos);
void InvalidateFunctions(Zone* zone,
const GrowableArray<const Function*>& functions);
+ void InvalidateSuspendStates(
+ Zone* zone,
+ const GrowableArray<const SuspendState*>& suspend_states);
void InvalidateFields(Zone* zone,
const GrowableArray<const Field*>& fields,
const GrowableArray<const Instance*>& instances);
@@ -411,7 +413,6 @@
friend class Class; // AddStaticFieldMapping, AddEnumBecomeMapping.
friend class Library;
friend class ObjectLocator;
- friend class MarkFunctionsForRecompilation; // IsDirty.
friend class ReasonForCancelling;
friend class IsolateGroupReloadContext;
};
diff --git a/runtime/vm/kernel_loader.cc b/runtime/vm/kernel_loader.cc
index 5cb7d4f..ee8d3a6 100644
--- a/runtime/vm/kernel_loader.cc
+++ b/runtime/vm/kernel_loader.cc
@@ -2037,9 +2037,6 @@
FunctionNodeHelper function_node_helper(&helper_);
function_node_helper.ReadUntilIncluding(FunctionNodeHelper::kDartAsyncMarker);
if (function_node_helper.async_marker_ == FunctionNodeHelper::kAsync) {
- if (!FLAG_precompiled_mode) {
- FATAL("Compact async functions are only supported in AOT mode.");
- }
function.set_modifier(UntaggedFunction::kAsync);
function.set_is_debuggable(true);
function.set_is_inlinable(false);
@@ -2047,9 +2044,6 @@
ASSERT(function.IsCompactAsyncFunction());
} else if (function_node_helper.async_marker_ ==
FunctionNodeHelper::kAsyncStar) {
- if (!FLAG_precompiled_mode) {
- FATAL("Compact async* functions are only supported in AOT mode.");
- }
function.set_modifier(UntaggedFunction::kAsyncGen);
function.set_is_debuggable(true);
function.set_is_inlinable(false);
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 3526a5c..7bc0b78 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -12460,8 +12460,12 @@
untag()->set_name(name.ptr());
}
-void Library::set_url(const String& name) const {
- untag()->set_url(name.ptr());
+void Library::set_url(const String& url) const {
+ untag()->set_url(url.ptr());
+}
+
+void Library::set_private_key(const String& key) const {
+ untag()->set_private_key(key.ptr());
}
void Library::set_kernel_data(const ExternalTypedData& data) const {
@@ -26055,12 +26059,22 @@
const Instance& function_data,
Heap::Space space) {
SuspendState& result = SuspendState::Handle();
+ const intptr_t instance_size = SuspendState::InstanceSize(
+ frame_size + SuspendState::FrameSizeGrowthGap());
{
- ObjectPtr raw = Object::Allocate(
- SuspendState::kClassId, SuspendState::InstanceSize(frame_size), space,
- SuspendState::ContainsCompressedPointers());
+ ObjectPtr raw =
+ Object::Allocate(SuspendState::kClassId, instance_size, space,
+ SuspendState::ContainsCompressedPointers());
NoSafepointScope no_safepoint;
result ^= raw;
+#if !defined(DART_PRECOMPILED_RUNTIME)
+ // Include heap object alignment overhead into the frame capacity.
+ const intptr_t frame_capacity =
+ instance_size - SuspendState::payload_offset();
+ ASSERT(SuspendState::InstanceSize(frame_capacity) == instance_size);
+ ASSERT(frame_size <= frame_capacity);
+ result.set_frame_capacity(frame_capacity);
+#endif
result.set_frame_size(frame_size);
result.set_pc(0);
result.set_function_data(function_data);
@@ -26068,6 +26082,13 @@
return result.ptr();
}
+#if !defined(DART_PRECOMPILED_RUNTIME)
+void SuspendState::set_frame_capacity(intptr_t frame_capcity) const {
+ ASSERT(frame_capcity >= 0);
+ StoreNonPointer(&untag()->frame_capacity_, frame_capcity);
+}
+#endif
+
void SuspendState::set_frame_size(intptr_t frame_size) const {
ASSERT(frame_size >= 0);
StoreNonPointer(&untag()->frame_size_, frame_size);
@@ -26094,8 +26115,10 @@
ASSERT(code != Code::null());
return code;
#else
- UNIMPLEMENTED();
- return Code::null();
+ ObjectPtr code = *(reinterpret_cast<ObjectPtr*>(
+ untag()->payload() + untag()->frame_size_ +
+ runtime_frame_layout.code_from_fp * kWordSize));
+ return Code::RawCast(code);
#endif // defined(DART_PRECOMPILED_RUNTIME)
}
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 06fae2d..8b3c7a3 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -5120,6 +5120,7 @@
// the name and url.
void set_name(const String& name) const;
void set_url(const String& url) const;
+ void set_private_key(const String& key) const;
void set_num_imports(intptr_t value) const;
void set_flags(uint8_t flags) const;
@@ -6404,9 +6405,14 @@
return code->untag()->instructions();
}
- static intptr_t saved_instructions_offset() {
+ static intptr_t instructions_offset() {
return OFFSET_OF(UntaggedCode, instructions_);
}
+#if !defined(DART_PRECOMPILED_RUNTIME)
+ static intptr_t active_instructions_offset() {
+ return OFFSET_OF(UntaggedCode, active_instructions_);
+ }
+#endif
using EntryKind = CodeEntryKind;
@@ -11813,20 +11819,31 @@
static intptr_t HeaderSize() { return sizeof(UntaggedSuspendState); }
static intptr_t UnroundedSize(SuspendStatePtr ptr) {
- return UnroundedSize(ptr->untag()->frame_size_);
+ return UnroundedSize(ptr->untag()->frame_capacity());
}
- static intptr_t UnroundedSize(intptr_t frame_size) {
- return HeaderSize() + frame_size;
+ static intptr_t UnroundedSize(intptr_t frame_capacity) {
+ return HeaderSize() + frame_capacity;
}
static intptr_t InstanceSize() {
ASSERT_EQUAL(sizeof(UntaggedSuspendState),
OFFSET_OF_RETURNED_VALUE(UntaggedSuspendState, payload));
return 0;
}
- static intptr_t InstanceSize(intptr_t frame_size) {
- return RoundedAllocationSize(UnroundedSize(frame_size));
+ static intptr_t InstanceSize(intptr_t frame_capacity) {
+ return RoundedAllocationSize(UnroundedSize(frame_capacity));
}
+ // Number of extra words reserved for growth of frame size
+ // during SuspendState allocation. Frames do not grow in AOT.
+ static intptr_t FrameSizeGrowthGap() {
+ return ONLY_IN_PRECOMPILED(0) NOT_IN_PRECOMPILED(2);
+ }
+
+#if !defined(DART_PRECOMPILED_RUNTIME)
+ static intptr_t frame_capacity_offset() {
+ return OFFSET_OF(UntaggedSuspendState, frame_capacity_);
+ }
+#endif
static intptr_t frame_size_offset() {
return OFFSET_OF(UntaggedSuspendState, frame_size_);
}
@@ -11848,16 +11865,23 @@
const Instance& function_data,
Heap::Space space = Heap::kNew);
- InstancePtr function_data() const { return untag()->function_data(); }
uword pc() const { return untag()->pc_; }
+ InstancePtr function_data() const {
+ return untag()->function_data();
+ }
// Returns Code object corresponding to the suspended function.
CodePtr GetCodeObject() const;
private:
+#if !defined(DART_PRECOMPILED_RUNTIME)
+ void set_frame_capacity(intptr_t frame_capcity) const;
+#endif
void set_frame_size(intptr_t frame_size) const;
void set_pc(uword pc) const;
void set_function_data(const Instance& function_data) const;
+ void set_then_callback(const Closure& then_callback) const;
+ void set_error_callback(const Closure& error_callback) const;
FINAL_HEAP_OBJECT_IMPLEMENTATION(SuspendState, Instance);
friend class Class;
diff --git a/runtime/vm/object_reload.cc b/runtime/vm/object_reload.cc
index 85f6653..d939b4a 100644
--- a/runtime/vm/object_reload.cc
+++ b/runtime/vm/object_reload.cc
@@ -146,7 +146,8 @@
descriptors_ = code.pc_descriptors();
PcDescriptors::Iterator iter(descriptors_, UntaggedPcDescriptors::kIcCall);
while (iter.MoveNext()) {
- FATAL1("%s has IC calls but no ic_data_array\n", object_.ToCString());
+ FATAL1("%s has IC calls but no ic_data_array\n",
+ function.ToFullyQualifiedCString());
}
#endif
return;
diff --git a/runtime/vm/object_store.cc b/runtime/vm/object_store.cc
index f2959f4..733ed33 100644
--- a/runtime/vm/object_store.cc
+++ b/runtime/vm/object_store.cc
@@ -250,6 +250,7 @@
String& function_name = String::Handle(zone);
Function& function = Function::Handle(zone);
+ Field& field = Field::Handle(zone);
function_name = async_lib.PrivateName(Symbols::AsyncStarMoveNextHelper());
ASSERT(!function_name.IsNull());
@@ -297,6 +298,10 @@
ASSERT(!function.IsNull());
set_async_star_stream_controller_add_stream(function);
+ field = cls.LookupFieldAllowPrivate(Symbols::asyncStarBody());
+ ASSERT(!field.IsNull());
+ set_async_star_stream_controller_async_star_body(field);
+
if (FLAG_async_debugger) {
// Disable debugging and inlining of all functions on the
// _AsyncStarStreamController class.
diff --git a/runtime/vm/object_store.h b/runtime/vm/object_store.h
index 674d1b4..bbfe908 100644
--- a/runtime/vm/object_store.h
+++ b/runtime/vm/object_store.h
@@ -180,6 +180,7 @@
RW(Function, suspend_state_handle_exception) \
RW(Class, async_star_stream_controller) \
RW(Class, stream_class) \
+ RW(Field, async_star_stream_controller_async_star_body) \
ARW_RELAXED(Smi, future_timeout_future_index) \
ARW_RELAXED(Smi, future_wait_future_index) \
RW(CompressedStackMaps, canonicalized_stack_map_entries) \
@@ -261,6 +262,7 @@
RW(Array, dispatch_table_code_entries) \
RW(GrowableObjectArray, instructions_tables) \
RW(Array, obfuscation_map) \
+ RW(Array, loading_unit_uris) \
RW(GrowableObjectArray, ffi_callback_functions) \
RW(Class, ffi_pointer_class) \
RW(Class, ffi_native_type_class) \
diff --git a/runtime/vm/pending_deopts.cc b/runtime/vm/pending_deopts.cc
index 46ae036..c3d7cd2 100644
--- a/runtime/vm/pending_deopts.cc
+++ b/runtime/vm/pending_deopts.cc
@@ -73,7 +73,17 @@
}
uword PendingDeopts::RemapExceptionPCForDeopt(uword program_counter,
- uword frame_pointer) {
+ uword frame_pointer,
+ bool* clear_deopt) {
+ *clear_deopt = false;
+ // Do not attempt to deopt at async exception handler as it doesn't
+ // belong to the function code. Async handler never continues execution
+ // in the same frame - it either rethrows exception to the caller or
+ // tail calls Dart handler, leaving the function frame before the call.
+ if (program_counter == StubCode::AsyncExceptionHandler().EntryPoint()) {
+ *clear_deopt = true;
+ return program_counter;
+ }
// Check if the target frame is scheduled for lazy deopt.
for (intptr_t i = 0; i < pending_deopts_->length(); i++) {
if ((*pending_deopts_)[i].fp() == frame_pointer) {
diff --git a/runtime/vm/pending_deopts.h b/runtime/vm/pending_deopts.h
index 778dba2..27f16eb 100644
--- a/runtime/vm/pending_deopts.h
+++ b/runtime/vm/pending_deopts.h
@@ -40,7 +40,9 @@
uword FindPendingDeopt(uword fp);
void ClearPendingDeoptsBelow(uword fp, ClearReason reason);
void ClearPendingDeoptsAtOrBelow(uword fp, ClearReason reason);
- uword RemapExceptionPCForDeopt(uword program_counter, uword frame_pointer);
+ uword RemapExceptionPCForDeopt(uword program_counter,
+ uword frame_pointer,
+ bool* clear_deopt);
private:
MallocGrowableArray<PendingLazyDeopt>* pending_deopts_;
diff --git a/runtime/vm/raw_object.cc b/runtime/vm/raw_object.cc
index 07b74a2..4d87ab1 100644
--- a/runtime/vm/raw_object.cc
+++ b/runtime/vm/raw_object.cc
@@ -174,8 +174,8 @@
case kSuspendStateCid: {
const SuspendStatePtr raw_suspend_state =
static_cast<const SuspendStatePtr>(this);
- intptr_t frame_size = raw_suspend_state->untag()->frame_size_;
- instance_size = SuspendState::InstanceSize(frame_size);
+ intptr_t frame_capacity = raw_suspend_state->untag()->frame_capacity();
+ instance_size = SuspendState::InstanceSize(frame_capacity);
break;
}
case kTypeArgumentsCid: {
@@ -658,7 +658,7 @@
}
}
- return SuspendState::InstanceSize(raw_obj->untag()->frame_size_);
+ return SuspendState::InstanceSize(raw_obj->untag()->frame_capacity());
}
bool UntaggedCode::ContainsPC(const ObjectPtr raw_obj, uword pc) {
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index eb60d27..abc979e 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -3307,6 +3307,7 @@
class UntaggedSuspendState : public UntaggedInstance {
RAW_HEAP_OBJECT_IMPLEMENTATION(SuspendState);
+ NOT_IN_PRECOMPILED(intptr_t frame_capacity_);
intptr_t frame_size_;
uword pc_;
@@ -3324,6 +3325,14 @@
public:
uword pc() const { return pc_; }
+ intptr_t frame_capacity() const {
+#if defined(DART_PRECOMPILED_RUNTIME)
+ return frame_size_;
+#else
+ return frame_capacity_;
+#endif
+ }
+
static intptr_t payload_offset() {
return OFFSET_OF_RETURNED_VALUE(UntaggedSuspendState, payload);
}
diff --git a/runtime/vm/runtime_entry.cc b/runtime/vm/runtime_entry.cc
index a3fcc07..caa9315 100644
--- a/runtime/vm/runtime_entry.cc
+++ b/runtime/vm/runtime_entry.cc
@@ -711,15 +711,36 @@
// Allocate a SuspendState object.
// Arg0: frame size.
-// Arg1: function data.
+// Arg1: existing SuspendState object or function data.
// Return value: newly allocated object.
DEFINE_RUNTIME_ENTRY(AllocateSuspendState, 2) {
- const Smi& frame_size = Smi::CheckedHandle(zone, arguments.ArgAt(0));
- const Instance& function_data =
- Instance::CheckedHandle(zone, arguments.ArgAt(1));
- const SuspendState& result = SuspendState::Handle(
- zone, SuspendState::New(frame_size.Value(), function_data,
- SpaceForRuntimeAllocation()));
+ const intptr_t frame_size =
+ Smi::CheckedHandle(zone, arguments.ArgAt(0)).Value();
+ const Object& previous_state = Object::Handle(zone, arguments.ArgAt(1));
+ SuspendState& result = SuspendState::Handle(zone);
+ if (previous_state.IsSuspendState()) {
+ const auto& suspend_state = SuspendState::Cast(previous_state);
+ const auto& function_data =
+ Instance::Handle(zone, suspend_state.function_data());
+ ObjectStore* object_store = thread->isolate_group()->object_store();
+ if (function_data.GetClassId() ==
+ Class::Handle(zone, object_store->async_star_stream_controller())
+ .id()) {
+ // Reset _AsyncStarStreamController.asyncStarBody to null in order
+ // to create a new callback closure during next yield.
+ // The new callback closure will capture the reallocated SuspendState.
+ function_data.SetField(
+ Field::Handle(
+ zone,
+ object_store->async_star_stream_controller_async_star_body()),
+ Object::null_object());
+ }
+ result = SuspendState::New(frame_size, function_data,
+ SpaceForRuntimeAllocation());
+ } else {
+ result = SuspendState::New(frame_size, Instance::Cast(previous_state),
+ SpaceForRuntimeAllocation());
+ }
arguments.SetReturn(result);
}
@@ -3111,6 +3132,20 @@
}
}
+static bool IsSuspendedFrame(Zone* zone,
+ const Function& function,
+ StackFrame* frame) {
+ if (!function.IsSuspendableFunction()) {
+ return false;
+ }
+ auto& suspend_state = Object::Handle(
+ zone, *reinterpret_cast<ObjectPtr*>(LocalVarAddress(
+ frame->fp(), runtime_frame_layout.FrameSlotForVariableIndex(
+ SuspendState::kSuspendStateVarIndex))));
+ return suspend_state.IsSuspendState() &&
+ (SuspendState::Cast(suspend_state).pc() != 0);
+}
+
void DeoptimizeAt(Thread* mutator_thread,
const Code& optimized_code,
StackFrame* frame) {
@@ -3136,7 +3171,12 @@
function.SwitchToUnoptimizedCode();
}
- if (frame->IsMarkedForLazyDeopt()) {
+ if (IsSuspendedFrame(zone, function, frame)) {
+ // Frame is suspended and going to be removed from the stack.
+ if (FLAG_trace_deoptimization) {
+ THR_Print("Not deoptimizing suspended frame, fp=%" Pp "\n", frame->fp());
+ }
+ } else if (frame->IsMarkedForLazyDeopt()) {
// Deopt already scheduled.
if (FLAG_trace_deoptimization) {
THR_Print("Lazy deopt already scheduled for fp=%" Pp "\n", frame->fp());
@@ -3408,6 +3448,52 @@
UNREACHABLE();
}
+// Handle slow path actions for the resumed frame after it was
+// copied back to the stack:
+// 1) deoptimization;
+// 2) breakpoint at resumption;
+// 3) throwing an exception.
+//
+// Arg0: exception
+// Arg1: stack trace
+DEFINE_RUNTIME_ENTRY(ResumeFrame, 2) {
+ const Instance& exception = Instance::CheckedHandle(zone, arguments.ArgAt(0));
+ const Instance& stacktrace =
+ Instance::CheckedHandle(zone, arguments.ArgAt(1));
+
+#if !defined(DART_PRECOMPILED_RUNTIME)
+#if !defined(PRODUCT)
+ if (isolate->has_resumption_breakpoints()) {
+ isolate->debugger()->ResumptionBreakpoint();
+ }
+#endif
+
+ DartFrameIterator iterator(thread,
+ StackFrameIterator::kNoCrossThreadIteration);
+ StackFrame* frame = iterator.NextFrame();
+ ASSERT(frame->IsDartFrame());
+ ASSERT(Function::Handle(zone, frame->LookupDartFunction())
+ .IsSuspendableFunction());
+ const Code& caller_code = Code::Handle(zone, frame->LookupDartCode());
+ if (caller_code.IsDisabled() && caller_code.is_optimized() &&
+ !caller_code.is_force_optimized()) {
+ const uword deopt_pc = frame->pc();
+ thread->pending_deopts().AddPendingDeopt(frame->fp(), deopt_pc);
+ frame->MarkForLazyDeopt();
+
+ if (FLAG_trace_deoptimization) {
+ THR_Print("Lazy deopt scheduled for resumed frame fp=%" Pp ", pc=%" Pp
+ "\n",
+ frame->fp(), deopt_pc);
+ }
+ }
+#endif
+
+ if (!exception.IsNull()) {
+ Exceptions::ReThrow(thread, exception, stacktrace);
+ }
+}
+
void OnEveryRuntimeEntryCall(Thread* thread,
const char* runtime_call_name,
bool can_lazy_deopt) {
diff --git a/runtime/vm/runtime_entry_list.h b/runtime/vm/runtime_entry_list.h
index 685c56d..90a51a9 100644
--- a/runtime/vm/runtime_entry_list.h
+++ b/runtime/vm/runtime_entry_list.h
@@ -62,6 +62,7 @@
V(LateFieldAssignedDuringInitializationError) \
V(LateFieldNotInitializedError) \
V(CompileFunction) \
+ V(ResumeFrame) \
V(SwitchableCallMiss) \
V(NotLoaded)
diff --git a/runtime/vm/symbols.h b/runtime/vm/symbols.h
index 7eb6d2d..f0fe6a8 100644
--- a/runtime/vm/symbols.h
+++ b/runtime/vm/symbols.h
@@ -457,6 +457,7 @@
V(_yieldAsyncStar, "_yieldAsyncStar") \
V(add, "add") \
V(addStream, "addStream") \
+ V(asyncStarBody, "asyncStarBody") \
V(callback, "callback") \
V(capture_length, ":capture_length") \
V(capture_start_index, ":capture_start_index") \
diff --git a/runtime/vm/thread.h b/runtime/vm/thread.h
index dc5b90b..4d95cb4 100644
--- a/runtime/vm/thread.h
+++ b/runtime/vm/thread.h
@@ -129,6 +129,14 @@
StubCode::AllocateObjectParameterized().ptr(), nullptr) \
V(CodePtr, allocate_object_slow_stub_, StubCode::AllocateObjectSlow().ptr(), \
nullptr) \
+ V(CodePtr, async_exception_handler_stub_, \
+ StubCode::AsyncExceptionHandler().ptr(), nullptr) \
+ V(CodePtr, resume_stub_, StubCode::Resume().ptr(), nullptr) \
+ V(CodePtr, return_async_stub_, StubCode::ReturnAsync().ptr(), nullptr) \
+ V(CodePtr, return_async_not_future_stub_, \
+ StubCode::ReturnAsyncNotFuture().ptr(), nullptr) \
+ V(CodePtr, return_async_star_stub_, StubCode::ReturnAsyncStar().ptr(), \
+ nullptr) \
V(CodePtr, stack_overflow_shared_without_fpu_regs_stub_, \
StubCode::StackOverflowSharedWithoutFPURegs().ptr(), nullptr) \
V(CodePtr, stack_overflow_shared_with_fpu_regs_stub_, \
diff --git a/runtime/vm/type_testing_stubs_test.cc b/runtime/vm/type_testing_stubs_test.cc
index 2a0f8e9..8be06b0 100644
--- a/runtime/vm/type_testing_stubs_test.cc
+++ b/runtime/vm/type_testing_stubs_test.cc
@@ -1140,6 +1140,8 @@
(() => 3) as int Function()?;
)";
+ SetupCoreLibrariesForUnitTest();
+
const auto& class_future =
Class::Handle(IsolateGroup::Current()->object_store()->future_class());
diff --git a/sdk/lib/_internal/vm/bin/socket_patch.dart b/sdk/lib/_internal/vm/bin/socket_patch.dart
index d0bddf8..a70896e 100644
--- a/sdk/lib/_internal/vm/bin/socket_patch.dart
+++ b/sdk/lib/_internal/vm/bin/socket_patch.dart
@@ -2543,6 +2543,7 @@
}
@patch
+@pragma("vm:entry-point")
class ResourceHandle {
factory ResourceHandle.fromFile(RandomAccessFile file) {
int fd = (file as _RandomAccessFile).fd;
diff --git a/sdk/lib/_internal/vm/lib/async_patch.dart b/sdk/lib/_internal/vm/lib/async_patch.dart
index d6f6c74..238cbb6 100644
--- a/sdk/lib/_internal/vm/lib/async_patch.dart
+++ b/sdk/lib/_internal/vm/lib/async_patch.dart
@@ -110,6 +110,7 @@
class _AsyncStarStreamController<T> {
@pragma("vm:entry-point")
StreamController<T> controller;
+ @pragma("vm:entry-point")
Function? asyncStarBody;
bool isAdding = false;
bool onListenReceived = false;
diff --git a/tests/language/async/await_test.dart b/tests/language/async/await_test.dart
index 07c3dad..e7920d6 100644
--- a/tests/language/async/await_test.dart
+++ b/tests/language/async/await_test.dart
@@ -2,7 +2,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.
-library async_await_test;
+// VMOptions=
+// VMOptions=--optimization-counter-threshold=5
import "package:expect/expect.dart";
import "package:async_helper/async_helper.dart";
diff --git a/tests/language/await/future_test.dart b/tests/language/await/future_test.dart
index 10314a4..7654698 100644
--- a/tests/language/await/future_test.dart
+++ b/tests/language/await/future_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.
+// VMOptions=
// VMOptions=--optimization-counter-threshold=5
import 'package:expect/expect.dart';
diff --git a/tests/language_2/async/await_test.dart b/tests/language_2/async/await_test.dart
index f8b79d2..fd3f3f9 100644
--- a/tests/language_2/async/await_test.dart
+++ b/tests/language_2/async/await_test.dart
@@ -4,7 +4,8 @@
// @dart = 2.9
-library async_await_test;
+// VMOptions=
+// VMOptions=--optimization-counter-threshold=5
import "package:expect/expect.dart";
import "package:async_helper/async_helper.dart";
diff --git a/tests/language_2/await/future_test.dart b/tests/language_2/await/future_test.dart
index c927f6f..4b9c8d3 100644
--- a/tests/language_2/await/future_test.dart
+++ b/tests/language_2/await/future_test.dart
@@ -4,6 +4,7 @@
// @dart = 2.9
+// VMOptions=
// VMOptions=--optimization-counter-threshold=5
import 'package:expect/expect.dart';
diff --git a/tests/standalone/standalone.status b/tests/standalone/standalone.status
index 905ce63..6d0cacd4 100644
--- a/tests/standalone/standalone.status
+++ b/tests/standalone/standalone.status
@@ -7,6 +7,7 @@
# prefix.
io/http_close_stack_overflow_test: Skip # The test is heavy loaded. Should be used for manual test.
io/http_linklocal_ipv6_test: SkipByDesign # This needs manual test.
+io/large_file_read_small_file_test: Slow # Test reads small file 1M times
io/non_utf8_directory_test: Skip # Issue 33519. Temp files causing bots to go purple.
io/non_utf8_file_test: Skip # Issue 33519. Temp files causing bots to go purple.
io/non_utf8_link_test: Skip # Issue 33519. Temp files causing bots to go purple.
@@ -74,9 +75,6 @@
io/https_connection_closed_during_handshake_test: SkipByDesign # long_ssl_cert_evaluation needed for long handshake is only supported on mac.
io/https_nonblocking_trust_evaluation_test: SkipByDesign
-[ $system == windows ]
-io/large_file_read_small_file_test: Slow # Test reads small file 1M times
-
[ $builder_tag == swarming && $system == macos ]
io/*: Skip # Issue 30618
diff --git a/tests/standalone_2/standalone_2.status b/tests/standalone_2/standalone_2.status
index 5e3852e..fba85b6 100644
--- a/tests/standalone_2/standalone_2.status
+++ b/tests/standalone_2/standalone_2.status
@@ -7,6 +7,7 @@
# prefix.
io/http_close_stack_overflow_test: Skip # The test is heavy loaded. Should be used for manual test.
io/http_linklocal_ipv6_test: SkipByDesign # This needs manual test.
+io/large_file_read_small_file_test: Slow # Test reads small file 1M times
io/non_utf8_directory_test: Skip # Issue 33519. Temp files causing bots to go purple.
io/non_utf8_file_test: Skip # Issue 33519. Temp files causing bots to go purple.
io/non_utf8_link_test: Skip # Issue 33519. Temp files causing bots to go purple.
@@ -84,9 +85,6 @@
io/https_connection_closed_during_handshake_test: SkipByDesign # long_ssl_cert_evaluation needed for long handshake is only supported on mac.
io/https_nonblocking_trust_evaluation_test: SkipByDesign
-[ $system == windows ]
-io/large_file_read_small_file_test: Slow # Test reads small file 1M times
-
[ $builder_tag == swarming && $system == macos ]
io/*: Skip # Issue 30618
diff --git a/tools/VERSION b/tools/VERSION
index 3548928..b3753a6 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 18
PATCH 0
-PRERELEASE 166
+PRERELEASE 167
PRERELEASE_PATCH 0
\ No newline at end of file