425e4dbe09
Closes #44455. Closes #34803. Closes #42434. Bug: https://github.com/dart-lang/sdk/issues/44455 Bug: https://github.com/dart-lang/sdk/issues/34803 Bug: https://github.com/dart-lang/sdk/issues/42434 Change-Id: I3be93b0d4a251de79c3bfe9829143f0fbec201ab Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/181402 Commit-Queue: Dmitry Stefantsov <dmitryas@google.com> Reviewed-by: Johnni Winther <johnniwinther@google.com>
52 lines
2.9 KiB
Plaintext
52 lines
2.9 KiB
Plaintext
library /*isNonNullableByDefault*/;
|
|
import self as self;
|
|
import "dart:core" as core;
|
|
import "dart:async" as asy;
|
|
|
|
import "dart:async";
|
|
|
|
typedef Exactly<invariant T extends core::Object? = dynamic> = (T%) → T%;
|
|
extension _extension#0<T extends core::Object? = dynamic> on T% {
|
|
method checkStaticType = self::_extension#0|checkStaticType;
|
|
tearoff checkStaticType = self::_extension#0|get#checkStaticType;
|
|
}
|
|
static method id<T extends core::Object? = dynamic>(self::id::T% value) → self::id::T%
|
|
return value;
|
|
static method main() → 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, dynamic :exception, dynamic :stack_trace]) → dynamic yielding
|
|
try {
|
|
#L1:
|
|
{
|
|
FutureOr<core::int>x = 1.{core::num::+}(self::id<core::int>(1));
|
|
FutureOr<core::int>y = let final core::int #t1 = 1.{core::num::+}(self::id<core::int>(1)) 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)) in block {
|
|
self::_extension#0|checkStaticType<core::int, (core::int) → core::int>(#t2);
|
|
} =>#t2;
|
|
}
|
|
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.call();
|
|
:is_sync = true;
|
|
return :async_future;
|
|
}
|
|
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
|
|
return <R extends (self::_extension#0|get#checkStaticType::T%) → self::_extension#0|get#checkStaticType::T% = (dynamic) → dynamic>() → void => self::_extension#0|checkStaticType<self::_extension#0|get#checkStaticType::T%, R>(#this);
|
|
static method contextType<T extends core::Object? = dynamic>(core::Object? o) → self::contextType::T%
|
|
return o as{ForNonNullableByDefault} self::contextType::T%;
|