blob: 5291d14bc9c492abd810fde87aa46a15ba7a27db [file] [log] [blame]
library;
import self as self;
import "dart:core" as core;
class A<T extends core::Object? = dynamic> extends core::Object {
final field self::A::T% foo;
constructor •(self::A::T% foo) self::A<self::A::T%>
: self::A::foo = foo, super core::Object::•()
;
}
class B extends core::Object {
final field core::num foo;
constructor •(core::num foo) self::B
: self::B::foo = foo, super core::Object::•()
;
}
class C extends core::Object implements self::A<core::int>, self::B {
final field core::int foo;
constructor •(core::int foo) self::C
: self::C::foo = foo, super core::Object::•()
;
}
static method test(dynamic o) dynamic {
#L1:
{
final synthesized dynamic #0#0 = o;
synthesized core::bool #0#4;
synthesized core::bool #0#4#isSet = false;
synthesized dynamic #0#6;
synthesized core::bool #0#6#isSet = false;
synthesized dynamic #0#9;
synthesized core::bool #0#9#isSet = false;
synthesized core::bool #0#21;
synthesized core::bool #0#21#isSet = false;
synthesized dynamic #0#22;
synthesized core::bool #0#22#isSet = false;
synthesized dynamic #0#31;
synthesized core::bool #0#31#isSet = false;
{
if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t1 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool}) && #C2 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t2 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t3 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
{
return 0;
}
}
}
{
if(#0#0 is core::List<dynamic> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t4 = #0#4#isSet = true in #0#4 = #0#0{core::List<dynamic>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool}) && #C3 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{dynamic} #0#6{dynamic} : let final core::bool #t5 = #0#6#isSet = true in #0#6 = #0#0{core::List<dynamic>}.{core::List::[]}(0){(core::int) → dynamic}) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{dynamic} #0#9{dynamic} : let final core::bool #t6 = #0#9#isSet = true in #0#9 = #0#0{core::List<dynamic>}.{core::List::[]}(1){(core::int) → dynamic})) {
{
return 1;
}
}
}
{
if(#0#0 is core::List<core::int> && (#0#4#isSet ?{core::bool} #0#4{core::bool} : let final core::bool #t7 = #0#4#isSet = true in #0#4 = #0#0{core::List<core::int>}.{core::List::length}{core::int}.{core::num::>=}(#C1){(core::num) → core::bool}) && #C1 =={core::num::==}{(core::Object) → core::bool} (#0#6#isSet ?{core::int} #0#6{core::int} : let final core::bool #t8 = #0#6#isSet = true in #0#6 = #0#0{core::List<core::int>}.{core::List::[]}(0){(core::int) → core::int}) && #C4 =={core::num::==}{(core::Object) → core::bool} (#0#9#isSet ?{core::int} #0#9{core::int} : let final core::bool #t9 = #0#9#isSet = true in #0#9 = #0#0{core::List<core::int>}.{core::List::[]}(1){(core::int) → core::int})) {
{
return 2;
}
}
}
{
if(#0#0 is core::Map<dynamic, dynamic> && (#0#21#isSet ?{core::bool} #0#21{core::bool} : let final core::bool #t10 = #0#21#isSet = true in #0#21 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && #C6 =={core::num::==}{(core::Object) → core::bool} (#0#22#isSet ?{dynamic} #0#22{dynamic} : let final core::bool #t11 = #0#22#isSet = true in #0#22 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C5){(core::Object?) → dynamic})) {
{
return 3;
}
}
}
{
if(#0#0 is core::Map<dynamic, dynamic> && (#0#21#isSet ?{core::bool} #0#21{core::bool} : let final core::bool #t12 = #0#21#isSet = true in #0#21 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#22#isSet ?{dynamic} #0#22{dynamic} : let final core::bool #t13 = #0#22#isSet = true in #0#22 = #0#0{core::Map<dynamic, dynamic>}.{core::Map::[]}(#C5){(core::Object?) → dynamic})) {
{
return 4;
}
}
}
{
if(#0#0 is core::Map<core::String, core::int> && (#0#21#isSet ?{core::bool} #0#21{core::bool} : let final core::bool #t14 = #0#21#isSet = true in #0#21 = #0#0{core::Map<core::String, core::int>}.{core::Map::containsKey}(#C5){(core::Object?) → core::bool}) && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#22#isSet ?{core::int?} #0#22{core::int?} : let final core::bool #t15 = #0#22#isSet = true in #0#22 = #0#0{core::Map<core::String, core::int>}.{core::Map::[]}(#C5){(core::Object?) → core::int?}) as{Unchecked} core::int) {
{
return 5;
}
}
}
{
if(#0#0 is self::A<dynamic> && #C6 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{dynamic} #0#31{dynamic} : let final core::bool #t16 = #0#31#isSet = true in #0#31 = #0#0{self::A<dynamic>}.{self::A::foo}{dynamic})) {
{
return 6;
}
}
}
{
if(#0#0 is self::A<core::int> && #C7 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{core::int} #0#31{core::int} : let final core::bool #t17 = #0#31#isSet = true in #0#31 = #0#0{self::A<core::int>}.{self::A::foo}{core::int})) {
{
return 7;
}
}
}
{
if(#0#0 is self::B && #C8 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{core::num} #0#31{core::num} : let final core::bool #t18 = #0#31#isSet = true in #0#31 = #0#0{self::B}.{self::B::foo}{core::num})) {
{
return 8;
}
}
}
{
if(#0#0 is ({foo: core::Object?}) && #C9 =={core::num::==}{(core::Object) → core::bool} (#0#31#isSet ?{core::Object?} #0#31{core::Object?} : let final core::bool #t19 = #0#31#isSet = true in #0#31 = #0#0{({foo: core::Object?})}.foo{core::Object?})) {
{
return 9;
}
}
}
}
return 1.{core::int::unary-}(){() core::int};
}
static method main() dynamic {
self::expect(0, self::test(core::_GrowableList::_literal2<core::int>(0, 1)));
self::expect(0, self::test(core::_GrowableList::_literal3<core::int>(0, 1, 2)));
self::expect(1, self::test(core::_GrowableList::_literal2<core::int>(1, 2)));
self::expect(1, self::test(core::_GrowableList::_literal3<core::int>(1, 2, 3)));
self::expect(2, self::test(core::_GrowableList::_literal2<core::int>(2, 3)));
self::expect(2, self::test(core::_GrowableList::_literal3<core::int>(2, 3, 4)));
self::expect(1.{core::int::unary-}(){() core::int}, self::test(core::_GrowableList::_literal2<core::num>(2, 3)));
self::expect(3, self::test(<core::String, core::int>{"foo": 5}));
self::expect(3, self::test(<core::String, core::int>{"foo": 5, "bar": 6}));
self::expect(4, self::test(<core::String, core::int>{"foo": 6}));
self::expect(4, self::test(<core::String, core::int>{"foo": 6, "bar": 7}));
self::expect(5, self::test(<core::String, core::int>{"foo": 7}));
self::expect(5, self::test(<core::String, core::int>{"foo": 7, "bar": 8}));
self::expect(1.{core::int::unary-}(){() core::int}, self::test(<core::String, core::num>{"foo": 7}));
self::expect(6, self::test(new self::A::•<core::num>(5)));
self::expect(6, self::test(new self::A::•<core::int>(5)));
self::expect(1.{core::int::unary-}(){() core::int}, self::test(new self::A::•<core::num>(6)));
self::expect(7, self::test(new self::A::•<core::int>(6)));
self::expect(1.{core::int::unary-}(){() core::int}, self::test(new self::A::•<core::int>(7)));
self::expect(1.{core::int::unary-}(){() core::int}, self::test(new self::B::•(5)));
self::expect(1.{core::int::unary-}(){() core::int}, self::test(new self::B::•(6)));
self::expect(8, self::test(new self::B::•(7)));
self::expect(6, self::test(new self::C::•(5)));
self::expect(7, self::test(new self::C::•(6)));
self::expect(8, self::test(new self::C::•(7)));
self::expect(1.{core::int::unary-}(){() core::int}, self::test(new self::C::•(8)));
self::expect(9, self::test(({foo: 8})));
self::expect(1.{core::int::unary-}(){() core::int}, self::test(({foo: 9})));
}
static method expect(dynamic expected, dynamic actual) dynamic {
if(!(expected =={core::Object::==}{(core::Object) core::bool} actual)) {
throw "Expected ${expected}, actual ${actual}";
}
}
constants {
#C1 = 2
#C2 = 0
#C3 = 1
#C4 = 3
#C5 = "foo"
#C6 = 5
#C7 = 6
#C8 = 7
#C9 = 8
}
Extra constant evaluation status:
Evaluated: InstanceInvocation @ org-dartlang-testcase:///multiple_targets.dart:46:10 -> IntConstant(-1)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///multiple_targets.dart:56:10 -> IntConstant(-1)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///multiple_targets.dart:64:10 -> IntConstant(-1)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///multiple_targets.dart:68:10 -> IntConstant(-1)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///multiple_targets.dart:70:10 -> IntConstant(-1)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///multiple_targets.dart:71:10 -> IntConstant(-1)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///multiple_targets.dart:72:10 -> IntConstant(-1)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///multiple_targets.dart:77:10 -> IntConstant(-1)
Evaluated: RecordLiteral @ org-dartlang-testcase:///multiple_targets.dart:79:18 -> RecordConstant(const ({foo: 8}))
Evaluated: InstanceInvocation @ org-dartlang-testcase:///multiple_targets.dart:80:10 -> IntConstant(-1)
Evaluated: RecordLiteral @ org-dartlang-testcase:///multiple_targets.dart:80:19 -> RecordConstant(const ({foo: 9}))
Extra constant evaluation: evaluated: 313, effectively constant: 11