blob: 85b1110f88dac9df6fb27ded5bbf4ab4136524ee [file] [log] [blame]
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 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 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);