236f3f820d
The handling of null shorting in the variable initializer interfered with the declaration of the variable, making subsequent flow potentially losing track of promotions. Closes #42504 Change-Id: Idb17920ffe8746983825714f76160abcca54751b Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/152760 Reviewed-by: Jens Johansen <jensj@google.com> Commit-Queue: Johnni Winther <johnniwinther@google.com>
39 lines
1.5 KiB
Plaintext
39 lines
1.5 KiB
Plaintext
library /*isNonNullableByDefault*/;
|
|
import self as self;
|
|
import "dart:core" as core;
|
|
|
|
abstract class ImageStreamCompleter extends core::Object {
|
|
synthetic constructor •() → self::ImageStreamCompleter
|
|
: super core::Object::•()
|
|
;
|
|
abstract method addListener() → void;
|
|
}
|
|
class _LiveImage extends core::Object {
|
|
static factory •(self::ImageStreamCompleter a) → self::_LiveImage
|
|
return throw new core::UnimplementedError::•();
|
|
}
|
|
abstract class Foo extends core::Object {
|
|
synthetic constructor •() → self::Foo
|
|
: super core::Object::•()
|
|
;
|
|
abstract get _pendingImages() → dynamic;
|
|
method putIfAbsent(core::Object key, () → self::ImageStreamCompleter loader) → self::ImageStreamCompleter? {
|
|
assert(!key.{core::Object::==}(null));
|
|
assert(!loader.{core::Object::==}(null));
|
|
self::ImageStreamCompleter? result = (let final dynamic #t1 = this.{self::Foo::_pendingImages}.[](key) in #t1.{core::Object::==}(null) ?{dynamic} null : #t1.completer) as{TypeError,ForDynamic,ForNonNullableByDefault} self::ImageStreamCompleter?;
|
|
if(!result.{core::Object::==}(null)) {
|
|
return result{self::ImageStreamCompleter};
|
|
}
|
|
try {
|
|
result = loader.call();
|
|
self::_LiveImage::•(result{self::ImageStreamCompleter});
|
|
}
|
|
on core::Object catch(final core::Object error) {
|
|
return null;
|
|
}
|
|
result{self::ImageStreamCompleter}.{self::ImageStreamCompleter::addListener}();
|
|
return result{self::ImageStreamCompleter};
|
|
}
|
|
}
|
|
static method main() → dynamic {}
|