blob: 2039db07d1b07d4bd3e3e5e00237adc48288f367 [file] [log] [blame]
library #lib /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "dart:ffi" as ffi;
import "dart:async" as asy;
import "dart:_internal" as _in;
import "dart:ffi";
class MyFinalizable extends core::Object implements ffi::Finalizable {
synthetic constructor •() self::MyFinalizable
: super core::Object::•()
;
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> 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 {
final asy::Future<core::int> :expressionValueWrappedFinalizable = self::doSomething();
_in::reachabilityFence(this);
} =>:expressionValueWrappedFinalizable;
}
}
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 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);
}