blob: ce6f78a4e11257771b8f2f48e7f65435fca43605 [file] [log] [blame]
library;
import self as self;
import "dart:core" as core;
import "never_opt_out_lib.dart" as nev;
import "org-dartlang-testcase:///never_opt_out_lib.dart";
class GenericClass<T extends core::Object* = dynamic> extends core::Object {
synthetic constructor •() self::GenericClass<self::GenericClass::T*>*
: super core::Object::•()
;
abstract member-signature get _identityHashCode() core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) core::bool*; -> core::Object::==
abstract member-signature get hashCode() core::int*; -> core::Object::hashCode
abstract member-signature method toString() core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() core::Type*; -> core::Object::runtimeType
}
class B extends nev::A {
field Null neverField = null;
field Null nullField = null;
synthetic constructor •() self::B*
: super nev::A::•()
;
method neverMethod(Null value) Null
return value;
get neverProperty() Null
return null;
set neverProperty(Null value) void {}
method nullMethod(Null value) Null
return value;
get nullProperty() Null
return null;
set nullProperty(Null value) void {}
abstract member-signature get _identityHashCode() core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) core::bool*; -> core::Object::==
abstract member-signature get hashCode() core::int*; -> core::Object::hashCode
abstract member-signature method toString() core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() core::Type*; -> core::Object::runtimeType
}
class C extends nev::A {
field Never* neverField = null;
field Never* nullField = null;
synthetic constructor •() self::C*
: super nev::A::•()
;
method neverMethod(Null value) Never*
return value;
get neverProperty() Never*
return null;
set neverProperty(Null value) void {}
method nullMethod(Null value) Never*
return value;
get nullProperty() Never*
return null;
set nullProperty(Null value) void {}
abstract member-signature get _identityHashCode() core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) core::bool*; -> core::Object::==
abstract member-signature get hashCode() core::int*; -> core::Object::hashCode
abstract member-signature method toString() core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() core::Type*; -> core::Object::runtimeType
}
static field Never* optOutNever;
static field dynamic inferredOptOutNever = nev::optInNever;
static method genericMethod<T extends core::Object* = dynamic>() dynamic {}
static method main() dynamic {
nev::optInNever = self::optOutNever;
core::Type* typeNever = #C1;
self::genericMethod<Never*>();
new self::GenericClass::•<Never*>();
Never* localNever = null;
Null localNull = null;
dynamic inferredLocalNever = nev::optInNever;
localNever = localNever;
self::optOutNever = localNever;
nev::optInNever = localNever;
localNull = localNever;
self::inferredOptOutNever = localNever;
inferredLocalNever = localNever;
localNever = self::optOutNever;
self::optOutNever = self::optOutNever;
nev::optInNever = self::optOutNever;
localNull = self::optOutNever;
self::inferredOptOutNever = self::optOutNever;
inferredLocalNever = self::optOutNever;
localNever = nev::optInNever;
self::optOutNever = nev::optInNever;
nev::optInNever = nev::optInNever;
localNull = nev::optInNever;
self::inferredOptOutNever = nev::optInNever;
inferredLocalNever = nev::optInNever;
localNever = localNull;
self::optOutNever = localNull;
nev::optInNever = localNull;
localNull = localNull;
self::inferredOptOutNever = localNull;
inferredLocalNever = localNull;
localNever = self::inferredOptOutNever as{TypeError,ForDynamic} Never*;
self::optOutNever = self::inferredOptOutNever as{TypeError,ForDynamic} Never*;
nev::optInNever = self::inferredOptOutNever as{TypeError,ForDynamic} Never;
localNull = self::inferredOptOutNever as{TypeError,ForDynamic} Null;
self::inferredOptOutNever = self::inferredOptOutNever;
inferredLocalNever = self::inferredOptOutNever;
localNever = inferredLocalNever as{TypeError,ForDynamic} Never*;
self::optOutNever = inferredLocalNever as{TypeError,ForDynamic} Never*;
nev::optInNever = inferredLocalNever as{TypeError,ForDynamic} Never;
localNull = inferredLocalNever as{TypeError,ForDynamic} Null;
self::inferredOptOutNever = inferredLocalNever;
inferredLocalNever = inferredLocalNever;
self::throws(() Null => self::optOutNever = nev::throwing());
self::throws(() Null => localNever = nev::throwing());
self::throws(() Null => self::optOutNever = nev::throwing());
self::throws(() Null => nev::optInNever = nev::throwing());
self::throws(() Null => self::inferredOptOutNever = nev::throwing());
self::throws(() Null => inferredLocalNever = nev::throwing());
nev::BoundedGenericClass<Null>* boundedGenericClass = new nev::BoundedGenericClass::•<Null>();
self::throws(() Null {
dynamic boundedGenericMethodResult1 = nev::boundedGenericMethod1<Null>();
});
core::List<Null>* boundedGenericMethodResult2 = nev::boundedGenericMethod2<Null>();
dynamic dyn = null;
nev::optInNever = dyn as{TypeError,ForDynamic} Never;
}
static method throws(() →* void f) dynamic {
try {
f.call();
}
on dynamic catch(final dynamic _) {
return;
}
throw "Expected exception";
}
library /*isNonNullableByDefault*/;
import self as nev;
import "dart:core" as core;
import "dart:_internal" as _in;
import "org-dartlang-testcase:///never_opt_out.dart";
class A extends core::Object {
field Never neverField = throw "Should not reach here";
field Null nullField = null;
synthetic constructor •() nev::A
: super core::Object::•()
;
method neverMethod(Never value) Never
return let final Never #t1 = value in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
get neverProperty() Never
return throw "Should not reach here";
set neverProperty(Never value) void {}
method nullMethod(Null value) Null
return value;
get nullProperty() Null
return null;
set nullProperty(Null value) void {}
}
class BoundedGenericClass<T extends Never = Never> extends core::Object {
synthetic constructor •() nev::BoundedGenericClass<nev::BoundedGenericClass::T>
: super core::Object::•()
;
}
late static field Never optInNever;
static method throwing() Never
return throw "Never!";
static method boundedGenericMethod1<T extends Never = Never>() nev::boundedGenericMethod1::T
return throw "Should never return";
static method boundedGenericMethod2<T extends Never = Never>() core::List<nev::boundedGenericMethod2::T>
return core::_GrowableList::•<nev::boundedGenericMethod2::T>(0);
constants {
#C1 = TypeLiteralConstant(Never*)
}