blob: 20c777bd2775542bdd64b654683755d42e4b4069 [file] [log] [blame]
library;
import self as self;
import "dart:core" as core;
import "dart:async" as asy;
import "dart:async";
static final field core::bool inWeakMode = #C1 is core::List<core::Object>;
static method exhaustiveNonNullableTypeVariable<T extends core::Object>(core::int? o) dynamic
return block {
core::int #t1;
final synthesized core::int? #0#0 = o;
#L1:
{
{
if(let final self::exhaustiveNonNullableTypeVariable::T #t2 = #0#0 as self::exhaustiveNonNullableTypeVariable::T in (#0#0 as self::exhaustiveNonNullableTypeVariable::T) is core::int) {
#t1 = 0;
break #L1;
}
}
}
} =>#t1;
static method exhaustiveNonNullableType(core::int? o) dynamic
return block {
core::int #t3;
final synthesized core::int? #0#0 = o;
#L2:
{
{
if(let final core::int #t4 = let core::int? #t5 = #0#0 in #t5 == null ?{core::int} #t5 as core::int : #t5{core::int} in true) {
#t3 = 0;
break #L2;
}
}
}
} =>#t3;
static method exhaustiveNonNullableSuperType(core::int? o) dynamic
return block {
core::int #t6;
final synthesized core::int? #0#0 = o;
#L3:
{
{
if(let final core::num #t7 = let core::int? #t8 = #0#0 in #t8 == null ?{core::num} #t8 as core::num : #t8{core::num} in (let core::int? #t9 = #0#0 in #t9 == null ?{core::num} #t9 as core::num : #t9{core::num}) is core::int) {
#t6 = 0;
break #L3;
}
}
}
} =>#t6;
static method exhaustiveNonNullableFutureOr1(FutureOr<core::int>? o) dynamic
return block {
core::int #t10;
final synthesized FutureOr<core::int>? #0#0 = o;
#L4:
{
{
if(let final FutureOr<core::int>#t11 = let FutureOr<core::int>? #t12 = #0#0 in #t12 == null ?{FutureOr<core::int>} #t12 as FutureOr<core::int> : #t12{FutureOr<core::int>} in true) {
#t10 = 0;
break #L4;
}
}
}
} =>#t10;
static method exhaustiveNonNullableFutureOr2(FutureOr<core::int?>o) dynamic
return block {
core::int #t13;
final synthesized FutureOr<core::int?>#0#0 = o;
#L5:
{
{
if(let final FutureOr<core::int>#t14 = #0#0 as FutureOr<core::int> in true) {
#t13 = 0;
break #L5;
}
}
}
} =>#t13;
static method exhaustiveNonNullableFutureOrTypeVariable1<T extends core::Object>(FutureOr<self::exhaustiveNonNullableFutureOrTypeVariable1::T>? o) dynamic
return block {
core::int #t15;
final synthesized FutureOr<self::exhaustiveNonNullableFutureOrTypeVariable1::T>? #0#0 = o;
#L6:
{
{
if(let final FutureOr<self::exhaustiveNonNullableFutureOrTypeVariable1::T>#t16 = let FutureOr<self::exhaustiveNonNullableFutureOrTypeVariable1::T>? #t17 = #0#0 in #t17 == null ?{FutureOr<self::exhaustiveNonNullableFutureOrTypeVariable1::T>} #t17 as FutureOr<self::exhaustiveNonNullableFutureOrTypeVariable1::T> : #t17{FutureOr<self::exhaustiveNonNullableFutureOrTypeVariable1::T>} in true) {
#t15 = 0;
break #L6;
}
}
}
} =>#t15;
static method exhaustiveNonNullableFutureOrTypeVariable2<T extends core::Object>(FutureOr<self::exhaustiveNonNullableFutureOrTypeVariable2::T?>o) dynamic
return block {
core::int #t18;
final synthesized FutureOr<self::exhaustiveNonNullableFutureOrTypeVariable2::T?>#0#0 = o;
#L7:
{
{
if(let final FutureOr<self::exhaustiveNonNullableFutureOrTypeVariable2::T>#t19 = #0#0 as FutureOr<self::exhaustiveNonNullableFutureOrTypeVariable2::T> in true) {
#t18 = 0;
break #L7;
}
}
}
} =>#t18;
static method main() dynamic {
self::expect(0, self::exhaustiveNonNullableTypeVariable<core::Object>(42));
self::expect(0, self::exhaustiveNonNullableTypeVariable<core::int>(42));
self::throws(() dynamic => self::exhaustiveNonNullableTypeVariable<core::Object>(null));
self::expect(0, self::exhaustiveNonNullableType(42));
self::throwsOr(0, () dynamic => self::exhaustiveNonNullableType(null));
self::expect(0, self::exhaustiveNonNullableSuperType(42));
self::throws(() dynamic => self::exhaustiveNonNullableSuperType(null));
self::expect(0, self::exhaustiveNonNullableFutureOr1(42));
self::expect(0, self::exhaustiveNonNullableFutureOr1(asy::Future::value<core::int>(42)));
self::throwsOr(0, () dynamic => self::exhaustiveNonNullableFutureOr1(null));
self::expect(0, self::exhaustiveNonNullableFutureOr2(42));
self::expect(0, self::exhaustiveNonNullableFutureOr2(asy::Future::value<core::int>(42)));
self::throwsOr(0, () dynamic => self::exhaustiveNonNullableFutureOr2(asy::Future::value<core::int?>(null)));
self::throwsOr(0, () dynamic => self::exhaustiveNonNullableFutureOr2(null));
self::expect(0, self::exhaustiveNonNullableFutureOrTypeVariable1<core::Object>(42));
self::expect(0, self::exhaustiveNonNullableFutureOrTypeVariable1<core::int>(asy::Future::value<core::int>(42)));
self::throwsOr(0, () dynamic => self::exhaustiveNonNullableFutureOrTypeVariable1<core::Object>(null));
self::expect(0, self::exhaustiveNonNullableFutureOrTypeVariable2<core::int>(42));
self::expect(0, self::exhaustiveNonNullableFutureOrTypeVariable2<core::Object>(asy::Future::value<core::int>(42)));
self::throwsOr(0, () dynamic => self::exhaustiveNonNullableFutureOrTypeVariable2<core::int>(asy::Future::value<core::int?>(null)));
self::throwsOr(0, () dynamic => self::exhaustiveNonNullableFutureOrTypeVariable2<core::Object>(null));
}
static method expect(dynamic expected, dynamic actual) dynamic {
if(!(expected =={core::Object::==}{(core::Object) core::bool} actual))
throw "Expected ${expected}, actual ${actual}.";
}
static method throwsOr(dynamic expectedIfWeak, () dynamic f) dynamic {
if(self::inWeakMode) {
self::expect(expectedIfWeak, f(){() dynamic});
return;
}
else {
self::throws(f);
}
}
static method throws(() dynamic f) dynamic {
try {
f(){() dynamic};
}
on core::Object catch(final core::Object e) {
core::print(e);
return;
}
throw "Didn't throw";
}
constants {
#C1 = <Null>[]
}
Extra constant evaluation status:
Evaluated: IsExpression @ org-dartlang-testcase:///nullable_cast.dart:78:40 -> BoolConstant(false)
Extra constant evaluation: evaluated: 163, effectively constant: 1