Files
sdk/pkg/front_end/testcases/nnbd/issue42504.dart.weak.expect
T
Johnni Winther 236f3f820d [cfe] Fix flow analysis in initializers
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>
2020-07-01 08:57:18 +00:00

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 {}