blob: 61fb50e3ac8654ca3f30a92c30d3507d7e2f5839 [file] [log] [blame]
library #lib;
import self as self;
import "dart:core" as core;
class T1 extends core::Object {
synthetic constructor •() void
: super core::Object::•()
;
}
class T2 extends core::Object {
synthetic constructor •() void
: super core::Object::•()
;
}
class T3 extends core::Object {
[@vm.unreachable.metadata=] synthetic constructor •() void
: super core::Object::•()
throw "TFA Error: #lib::T3::";
}
class T4 extends core::Object {
synthetic constructor •() void
: super core::Object::•()
;
}
class T5 extends core::Object {
synthetic constructor •() void
: super core::Object::•()
;
}
class T6 extends core::Object {
synthetic constructor •() void
: super core::Object::•()
;
}
class T7 extends core::Object {
synthetic constructor •() void
: super core::Object::•()
;
}
abstract class A extends core::Object {
synthetic constructor •() void
: super core::Object::•()
;
abstract method foo() dynamic;
abstract get bar() dynamic;
abstract method bazz(dynamic a1, dynamic a2, dynamic a3, [dynamic a4 = null, dynamic a5 = null]) dynamic;
}
class B extends self::A {
synthetic constructor •() void
: super self::A::•()
;
method noSuchMethod(core::Invocation invocation) dynamic {
return new self::T1::•();
}
}
class C extends core::Object {
synthetic constructor •() void
: super core::Object::•()
;
method noSuchMethod(core::Invocation invocation) dynamic {
return new self::T2::•();
}
}
class D extends self::C implements self::A {
synthetic constructor •() void
: super self::C::•()
;
}
class E extends core::Object implements self::A {
synthetic constructor •() void
: super core::Object::•()
;
[@vm.unreachable.metadata=] method foo() dynamic
throw "TFA Error: #lib::E::foo";
method noSuchMethod(core::Invocation invocation) dynamic {
return new self::T4::•();
}
}
class F extends core::Object {
synthetic constructor •() void
: super core::Object::•()
;
[@vm.unreachable.metadata=] method twoArg(dynamic a1, dynamic a2) dynamic
throw "TFA Error: #lib::F::twoArg";
method noSuchMethod(core::Invocation invocation) dynamic {
return new self::T2::•();
}
}
class G extends core::Object {
synthetic constructor •() void
: super core::Object::•()
;
method noSuchMethod(core::Invocation invocation) dynamic {
return new self::T5::•();
}
}
class H extends core::Object {
synthetic constructor •() void
: super core::Object::•()
;
method foo({[@vm.inferred-type.metadata=!] dynamic left = null, [@vm.inferred-type.metadata=!] dynamic right = null}) dynamic
return new self::T6::•();
method noSuchMethod(core::Invocation invocation) dynamic {
return new self::T7::•();
}
}
[@vm.inferred-type.metadata=#lib::B]static field self::A bb = new self::B::•();
[@vm.inferred-type.metadata=#lib::D]static field self::A dd = new self::D::•();
[@vm.inferred-type.metadata=dart.core::Null?]static field core::Function unknown;
static method getDynamic() dynamic
return self::unknown.call();
static method main(core::List<core::String> args) dynamic {
core::print([@vm.inferred-type.metadata=#lib::T1] [@vm.inferred-type.metadata=#lib::B] self::bb.{self::A::foo}());
core::print([@vm.inferred-type.metadata=#lib::T1] [@vm.inferred-type.metadata=#lib::B] self::bb.{self::A::bar});
core::print([@vm.inferred-type.metadata=#lib::T1] [@vm.inferred-type.metadata=#lib::B] self::bb.{self::A::bazz}(1, 2, 3, 4));
core::print([@vm.inferred-type.metadata=#lib::T2] [@vm.inferred-type.metadata=#lib::D] self::dd.{self::A::foo}());
core::print([@vm.inferred-type.metadata=#lib::T2] [@vm.inferred-type.metadata=#lib::D] self::dd.{self::A::bar});
core::print([@vm.inferred-type.metadata=#lib::T2] [@vm.inferred-type.metadata=#lib::D] self::dd.{self::A::bazz}(1, 2, 3, 4));
new self::E::•();
self::A xx = self::getDynamic() as{TypeError} self::A;
core::print([@vm.inferred-type.metadata=!] xx.{self::A::bar});
dynamic yy = self::getDynamic();
core::print([@vm.inferred-type.metadata=!] yy.twoArg(1, 2, 3));
new self::F::•();
dynamic gg = new self::G::•();
core::print([@vm.inferred-type.metadata=#lib::T5] gg.noSuchMethod(null, null));
dynamic hh = new self::H::•();
core::print([@vm.inferred-type.metadata=#lib::T6] hh.foo(right: 2, left: 1));
core::print([@vm.inferred-type.metadata=#lib::T7] hh.foo(left: 1, top: 2));
}