| library; |
| import self as self; |
| import "dart:core" as core; |
| |
| typedef E<invariant T extends core::Object? = dynamic> = (T%) → T%; |
| extension Ext<T extends core::Object? = dynamic> on T% { |
| method st = self::Ext|st; |
| method tearoff st = self::Ext|get#st; |
| } |
| static method main() → void { |
| self::foo<core::num>(false, 0, 0); |
| } |
| static method foo<X extends core::Object? = dynamic>(core::bool test, self::foo::X% a, self::foo::X% b) → void { |
| if(!(a is core::int)) |
| return; |
| { |
| self::foo::X% c = let final self::foo::X% & core::int /* '%' & '!' = '!' */ #t1 = test ?{self::foo::X% & core::int /* '%' & '!' = '!' */} a{self::foo::X% & core::int /* '%' & '!' = '!' */} : a{self::foo::X% & core::int /* '%' & '!' = '!' */} in block { |
| #t1.{core::int::toRadixString}(2){(core::int) → core::String}; |
| self::Ext|st<self::foo::X%, (self::foo::X%) → self::foo::X%>(#t1); |
| } =>#t1; |
| { |
| self::foo::X% v1 = c{self::foo::X% & core::int /* '%' & '!' = '!' */}; |
| core::int v2 = c{self::foo::X% & core::int /* '%' & '!' = '!' */}; |
| self::Ext|get#st<self::foo::X%>(c{self::foo::X% & core::int /* '%' & '!' = '!' */})<(self::foo::X%) → self::foo::X%>; |
| c = a{self::foo::X% & core::int /* '%' & '!' = '!' */} as{Unchecked} self::foo::X%; |
| } |
| } |
| if(!(b is core::int)) |
| return; |
| { |
| self::foo::X% c = let final self::foo::X% & core::int /* '%' & '!' = '!' */ #t2 = test ?{self::foo::X% & core::int /* '%' & '!' = '!' */} a{self::foo::X% & core::int /* '%' & '!' = '!' */} : b{self::foo::X% & core::int /* '%' & '!' = '!' */} in block { |
| #t2.{core::int::toRadixString}(2){(core::int) → core::String}; |
| self::Ext|st<self::foo::X%, (self::foo::X%) → self::foo::X%>(#t2); |
| } =>#t2; |
| { |
| self::foo::X% v1 = c{self::foo::X% & core::int /* '%' & '!' = '!' */}; |
| core::int v2 = c{self::foo::X% & core::int /* '%' & '!' = '!' */}; |
| self::Ext|get#st<self::foo::X%>(c{self::foo::X% & core::int /* '%' & '!' = '!' */})<(self::foo::X%) → self::foo::X%>; |
| c = a{self::foo::X% & core::int /* '%' & '!' = '!' */} as{Unchecked} self::foo::X%; |
| } |
| } |
| } |
| static extension-member method Ext|st<T extends core::Object? = dynamic, S extends (self::Ext|st::T%) → self::Ext|st::T% = (dynamic) → dynamic>(lowered final self::Ext|st::T% #this) → void {} |
| static extension-member method Ext|get#st<T extends core::Object? = dynamic>(lowered final self::Ext|get#st::T% #this) → <S extends (self::Ext|get#st::T%) → self::Ext|get#st::T% = (dynamic) → dynamic>() → void |
| return <S extends (self::Ext|get#st::T%) → self::Ext|get#st::T% = (dynamic) → dynamic>() → void => self::Ext|st<self::Ext|get#st::T%, S>(#this); |