blob: 0acee2dcf8056077ba0e5aa63c81a89f9c6de78b [file] [log] [blame]
library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
class C<X extends core::Object? = core::Object?, Y extends core::Object = core::Object> extends core::Object {
synthetic constructor •() self::C<self::C::X%, self::C::Y>
: super core::Object::•()
;
method test(generic-covariant-impl self::C::X% x, generic-covariant-impl self::C::Y? y) dynamic {
core::Set<core::Object?> v = let final core::Set<core::Object?> #t1 = col::LinkedHashSet::•<core::Object?>() in let final dynamic #t2 = #t1.{core::Set::add}(x) in let final dynamic #t3 = #t1.{core::Set::add}(42) in #t1;
core::Set<core::Object?> w = let final core::Set<core::Object?> #t4 = col::LinkedHashSet::•<core::Object?>() in let final dynamic #t5 = #t4.{core::Set::add}(42) in let final dynamic #t6 = #t4.{core::Set::add}(x) in #t4;
core::Set<core::Object?> p = let final core::Set<core::Object?> #t7 = col::LinkedHashSet::•<core::Object?>() in let final dynamic #t8 = #t7.{core::Set::add}(y) in let final dynamic #t9 = #t7.{core::Set::add}(42) in #t7;
core::Set<core::Object?> q = let final core::Set<core::Object?> #t10 = col::LinkedHashSet::•<core::Object?>() in let final dynamic #t11 = #t10.{core::Set::add}(42) in let final dynamic #t12 = #t10.{core::Set::add}(y) in #t10;
self::assertRightSubtype(v);
self::assertLeftSubtype<core::Set<core::Object?>>(v);
self::assertRightSubtype(w);
self::assertLeftSubtype<core::Set<core::Object?>>(w);
self::assertRightSubtype(p);
self::assertLeftSubtype<core::Set<core::Object?>>(p);
self::assertRightSubtype(q);
self::assertLeftSubtype<core::Set<core::Object?>>(q);
if(x is{ForNonNullableByDefault} core::Object?) {
core::Set<core::Object?> v = let final core::Set<core::Object?> #t13 = col::LinkedHashSet::•<core::Object?>() in let final dynamic #t14 = #t13.{core::Set::add}(x{self::C::X% & core::Object? /* '%' & '?' = '%' */}) in let final dynamic #t15 = #t13.{core::Set::add}(42) in #t13;
core::Set<core::Object?> w = let final core::Set<core::Object?> #t16 = col::LinkedHashSet::•<core::Object?>() in let final dynamic #t17 = #t16.{core::Set::add}(42) in let final dynamic #t18 = #t16.{core::Set::add}(x{self::C::X% & core::Object? /* '%' & '?' = '%' */}) in #t16;
self::assertRightSubtype(v);
self::assertLeftSubtype<core::Set<core::Object?>>(v);
self::assertRightSubtype(w);
self::assertLeftSubtype<core::Set<core::Object?>>(w);
}
}
}
static method assertRightSubtype(dynamic x) dynamic {
x as{ForNonNullableByDefault} core::Set<core::Object?>;
}
static method assertLeftSubtype<X extends core::Object? = dynamic>(self::assertLeftSubtype::X% x) dynamic {
col::LinkedHashSet::•<core::Object?>() as{ForNonNullableByDefault} self::assertLeftSubtype::X%;
}
static method main() dynamic {
new self::C::•<core::int?, core::int>().{self::C::test}(42, null);
new self::C::•<core::int?, core::int>().{self::C::test}(null, null);
}