| library; |
| import self as self; |
| import "dart:core" as core; |
| |
| typedef Exactly<invariant X extends core::Object? = dynamic> = (X%) → X%; |
| class C extends core::Object { |
| synthetic constructor •() → self::C |
| : super core::Object::•() |
| ; |
| method call<T extends core::Object? = dynamic>(self::C::call::T% t) → self::C::call::T% |
| return t; |
| } |
| class Checker<X extends core::Object? = dynamic> extends core::Object { |
| final field self::Checker::X% x; |
| constructor •(self::Checker::X% x) → self::Checker<self::Checker::X%> |
| : self::Checker::x = x, super core::Object::•() |
| ; |
| method expectStaticType<covariant-by-class Y extends (self::Checker::X%) → self::Checker::X%>() → self::Checker::X% |
| return this.{self::Checker::x}{self::Checker::X%}; |
| } |
| static method f<X extends core::Object? = dynamic>((core::String) → self::f::X% g) → (core::String) → self::f::X% |
| return g; |
| static method main() → void { |
| (core::String) → core::String g = self::f<core::String>((let final self::C #t1 = new self::C::•() in #t1 == null ?{<T extends core::Object? = dynamic>(T%) → T%} null : #t1.{self::C::call}{<T extends core::Object? = dynamic>(T%) → T%})<core::String>); |
| new self::Checker::•<(core::String) → core::String>(g).{self::Checker::expectStaticType}<((core::String) → core::String) → (core::String) → core::String>(){() → (core::String) → core::String}; |
| } |