blob: 3da63739e2020e039a32b0945245fbff9899bbb1 [file] [log] [blame]
library #lib;
import self as self;
import "dart:core" as core;
class C<T extends core::Object = dynamic> extends core::Object {
synthetic constructor •() self::C<self::C::T>
: super core::Object::•()
;
[@vm.procedure-attributes.metadata=hasDynamicUses:false,hasTearOffUses:false] method foo() dynamic
return new self::D::•<self::C::T>();
[@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false] method id1([@vm.inferred-type.metadata=#lib::Y] generic-covariant-impl self::C::T x) dynamic
return x;
[@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false] method id2([@vm.inferred-type.metadata=#lib::Z] generic-covariant-impl self::C::T x) dynamic
return x;
}
class D<T extends core::Object = dynamic> extends core::Object {
synthetic constructor •() self::D<self::D::T>
: super core::Object::•()
;
}
class E<S extends core::Object = dynamic, T extends core::Object = dynamic> extends self::C<self::E::T> {
synthetic constructor •() self::E<self::E::S, self::E::T>
: super self::C::•()
;
[@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false] method foo() dynamic
return [@vm.inferred-type.metadata=#lib::D<dart.core::String>] super.{self::C::foo}();
[@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false] method bar() dynamic
return new self::D::•<self::E::S>();
[@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false] method baz() dynamic
return new self::D::•<self::E::T>();
}
abstract class X extends core::Object {
synthetic constructor •() self::X
: super core::Object::•()
;
}
class Y extends self::X {
synthetic constructor •() self::Y
: super self::X::•()
;
}
class Z extends self::X {
synthetic constructor •() self::Z
: super self::X::•()
;
}
abstract class I<T extends core::Object = dynamic> extends core::Object {
}
abstract class J extends self::I<core::int> {
}
class K<T extends core::Object = dynamic> extends core::Object {
synthetic constructor •() self::K<self::K::T>
: super core::Object::•()
;
}
class C2<T extends core::Object = dynamic> extends core::Object {
synthetic constructor •() self::C2<self::C2::T>
: super core::Object::•()
;
[@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false] method id3([@vm.inferred-type.metadata=dart.core::_Double] generic-covariant-impl core::Comparable<self::C2::T> x) dynamic
return x;
[@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false] method id4([@vm.inferred-type.metadata=#lib::K<#lib::J>] generic-covariant-impl self::K<self::I<self::C2::T>> x) dynamic
return x;
}
static method main() dynamic {
dynamic used;
used = [@vm.direct-call.metadata=#lib::C::foo] [@vm.inferred-type.metadata=#lib::D<dart.core::int> (skip check)] new self::C::•<core::int>().{self::C::foo}();
used = [@vm.direct-call.metadata=#lib::E::foo] [@vm.inferred-type.metadata=#lib::D<dart.core::String> (skip check)] new self::E::•<core::int, core::String>().{self::E::foo}();
used = [@vm.direct-call.metadata=#lib::E::bar] [@vm.inferred-type.metadata=#lib::D<dart.core::int> (skip check)] new self::E::•<core::int, core::String>().{self::E::bar}();
used = [@vm.direct-call.metadata=#lib::E::baz] [@vm.inferred-type.metadata=#lib::D<dart.core::String> (skip check)] new self::E::•<core::int, core::String>().{self::E::baz}();
self::C<self::X> c = new self::C::•<self::Y>();
[@vm.call-site-attributes.metadata=receiverType:#lib::C<#lib::X>] [@vm.direct-call.metadata=#lib::C::id1] [@vm.inferred-type.metadata=!? (skip check)] c.{self::C::id1}(new self::Y::•());
[@vm.call-site-attributes.metadata=receiverType:#lib::C<#lib::X>] [@vm.direct-call.metadata=#lib::C::id2] c.{self::C::id2}(new self::Z::•());
self::C2<core::num> c2 = new self::C2::•<core::num>();
[@vm.call-site-attributes.metadata=receiverType:#lib::C2<dart.core::num>] [@vm.direct-call.metadata=#lib::C2::id3] [@vm.inferred-type.metadata=!? (skip check)] c2.{self::C2::id3}(3.0);
[@vm.call-site-attributes.metadata=receiverType:#lib::C2<dart.core::num>] [@vm.direct-call.metadata=#lib::C2::id4] [@vm.inferred-type.metadata=!? (skip check)] c2.{self::C2::id4}(new self::K::•<self::J>());
return used;
}