| library /*isNonNullableByDefault*/; |
| import self as self; |
| import "dart:core" as core; |
| |
| class A<T extends core::num> extends core::Object { |
| synthetic constructor •() → self::A<self::A::T> |
| : super core::Object::•() |
| ; |
| method foo() → <S extends self::A::T = dynamic>(S) → void { |
| core::print("foo: T = ${self::A::T}"); |
| return <S extends self::A::T>(S a) → void {}; |
| } |
| } |
| class B<T extends core::num> extends core::Object { |
| synthetic constructor •() → self::B<self::B::T> |
| : super core::Object::•() |
| ; |
| method foo() → (self::B::T) → void { |
| core::print("foo: T = ${self::B::T}"); |
| return (self::B::T a) → void {}; |
| } |
| } |
| static field self::A<core::num> a = new self::A::•<core::int>(); |
| static field self::B<core::num> b = new self::B::•<core::int>(); |
| static method main() → dynamic { |
| try { |
| self::a.{self::A::foo}(){() → <S extends core::num = dynamic>(S) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} <S extends core::num = dynamic>(S) → void; |
| throw "Expected TypeError"; |
| } |
| on core::TypeError catch(final core::TypeError e) { |
| core::print(e); |
| } |
| try { |
| self::b.{self::B::foo}(){() → (core::num) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (core::num) → void; |
| throw "Expected TypeError"; |
| } |
| on core::TypeError catch(final core::TypeError e) { |
| core::print(e); |
| } |
| } |