| library; |
| import self as self; |
| import "dart:core" as core; |
| |
| class Class extends core::Object { |
| field core::Function* field1a = #C1; |
| field () →* core::int* field1b = #C1; |
| field (core::int*) →* core::int* field2 = #C2; |
| field (core::int*, core::int*) →* core::int* field3 = #C3; |
| field (core::int*, [core::int*]) →* core::int* field4 = #C4; |
| field ([core::int*, core::int*]) →* core::int* field5 = #C5; |
| field (core::int*, {b: core::int*}) →* core::int* field6 = #C6; |
| field ({a: core::int*, b: core::int*}) →* core::int* field7 = #C7; |
| synthetic constructor •() → self::Class* |
| : super core::Object::•() |
| ; |
| get getter1a() → core::Function* |
| return #C1; |
| get getter1b() → () →* core::int* |
| return #C1; |
| get getter2() → (core::int*) →* core::int* |
| return #C2; |
| get getter3() → (core::int*, core::int*) →* core::int* |
| return #C3; |
| get getter4() → (core::int*, [core::int*]) →* core::int* |
| return #C4; |
| get getter5() → ([core::int*, core::int*]) →* core::int* |
| return #C5; |
| get getter6() → (core::int*, {b: core::int*}) →* core::int* |
| return #C6; |
| get getter7() → ({a: core::int*, b: core::int*}) →* core::int* |
| return #C7; |
| abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode |
| abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf |
| abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf |
| abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue |
| abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse |
| abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::== |
| abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode |
| abstract member-signature method toString() → core::String*; -> core::Object::toString |
| abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod |
| abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType |
| } |
| class Subclass extends self::Class { |
| synthetic constructor •() → self::Subclass* |
| : super self::Class::•() |
| ; |
| get field1a() → core::Function* { |
| self::enableRead = false; |
| return #C1; |
| } |
| get field1b() → () →* core::int* { |
| self::enableRead = false; |
| return #C1; |
| } |
| get field2() → (core::int*) →* core::int* { |
| self::enableRead = false; |
| return #C2; |
| } |
| get field3() → (core::int*, core::int*) →* core::int* { |
| self::enableRead = false; |
| return #C3; |
| } |
| get field4() → (core::int*, [core::int*]) →* core::int* { |
| self::enableRead = false; |
| return #C4; |
| } |
| get field5() → ([core::int*, core::int*]) →* core::int* { |
| self::enableRead = false; |
| return #C5; |
| } |
| get field6() → (core::int*, {b: core::int*}) →* core::int* { |
| self::enableRead = false; |
| return #C6; |
| } |
| get field7() → ({a: core::int*, b: core::int*}) →* core::int* { |
| self::enableRead = false; |
| return #C7; |
| } |
| get getter1a() → core::Function* { |
| self::enableRead = false; |
| return #C1; |
| } |
| get getter1b() → () →* core::int* { |
| self::enableRead = false; |
| return #C1; |
| } |
| get getter2() → (core::int*) →* core::int* { |
| self::enableRead = false; |
| return #C2; |
| } |
| get getter3() → (core::int*, core::int*) →* core::int* { |
| self::enableRead = false; |
| return #C3; |
| } |
| get getter4() → (core::int*, [core::int*]) →* core::int* { |
| self::enableRead = false; |
| return #C4; |
| } |
| get getter5() → ([core::int*, core::int*]) →* core::int* { |
| self::enableRead = false; |
| return #C5; |
| } |
| get getter6() → (core::int*, {b: core::int*}) →* core::int* { |
| self::enableRead = false; |
| return #C6; |
| } |
| get getter7() → ({a: core::int*, b: core::int*}) →* core::int* { |
| self::enableRead = false; |
| return #C7; |
| } |
| } |
| static field core::bool* enableRead = true; |
| static method read(core::int* value) → core::int* |
| return self::enableRead ?{core::int*} value : 1.{core::int::unary-}(){() →* core::int*}; |
| static method method1() → core::int* |
| return 0; |
| static method method2(core::int* a) → core::int* |
| return a.{core::int::unary-}(){() →* core::int*}; |
| static method method3(core::int* a, core::int* b) → core::int* |
| return a.{core::num::-}(b){(core::num*) →* core::int*}; |
| static method method4(core::int* a, [core::int* b = #C8]) → core::int* |
| return a.{core::num::-}(b){(core::num*) →* core::int*}; |
| static method method5([core::int* a = #C8, core::int* b = #C8]) → core::int* |
| return a.{core::num::-}(b){(core::num*) →* core::int*}; |
| static method method6(core::int* a, {core::int* b = #C8}) → core::int* |
| return a.{core::num::-}(b){(core::num*) →* core::int*}; |
| static method method7({core::int* a = #C8, core::int* b = #C8}) → core::int* |
| return a.{core::num::-}(b){(core::num*) →* core::int*}; |
| static method main() → dynamic { |
| self::callField(new self::Class::•()); |
| self::callGetter(new self::Class::•()); |
| self::callField(new self::Subclass::•()); |
| self::callGetter(new self::Subclass::•()); |
| } |
| static method callField(self::Class* c) → dynamic { |
| self::expect(0, c.{self::Class::field1a}()); |
| self::expect(0, c.{self::Class::field1b}(){() →* core::int*}); |
| self::expect(42.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t1 = c in let final core::int* #t2 = self::read(42) in #t1.{self::Class::field2}(#t2){(core::int*) →* core::int*}); |
| self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t3 = c in let final core::int* #t4 = self::read(12) in let final core::int* #t5 = self::read(23) in #t3.{self::Class::field3}(#t4, #t5){(core::int*, core::int*) →* core::int*}); |
| self::expect(12, let final self::Class* #t6 = c in let final core::int* #t7 = self::read(12) in #t6.{self::Class::field4}(#t7){(core::int*, [core::int*]) →* core::int*}); |
| self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t8 = c in let final core::int* #t9 = self::read(12) in let final core::int* #t10 = self::read(23) in #t8.{self::Class::field4}(#t9, #t10){(core::int*, [core::int*]) →* core::int*}); |
| self::expect(0, c.{self::Class::field5}(){([core::int*, core::int*]) →* core::int*}); |
| self::expect(12, let final self::Class* #t11 = c in let final core::int* #t12 = self::read(12) in #t11.{self::Class::field5}(#t12){([core::int*, core::int*]) →* core::int*}); |
| self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t13 = c in let final core::int* #t14 = self::read(12) in let final core::int* #t15 = self::read(23) in #t13.{self::Class::field5}(#t14, #t15){([core::int*, core::int*]) →* core::int*}); |
| self::expect(12, let final self::Class* #t16 = c in let final core::int* #t17 = self::read(12) in #t16.{self::Class::field6}(#t17){(core::int*, {b: core::int*}) →* core::int*}); |
| self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t18 = c in let final core::int* #t19 = self::read(12) in let final core::int* #t20 = self::read(23) in #t18.{self::Class::field6}(#t19, b: #t20){(core::int*, {b: core::int*}) →* core::int*}); |
| self::expect(0, c.{self::Class::field7}(){({a: core::int*, b: core::int*}) →* core::int*}); |
| self::expect(12, let final self::Class* #t21 = c in let final core::int* #t22 = self::read(12) in #t21.{self::Class::field7}(a: #t22){({a: core::int*, b: core::int*}) →* core::int*}); |
| self::expect(23.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t23 = c in let final core::int* #t24 = self::read(23) in #t23.{self::Class::field7}(b: #t24){({a: core::int*, b: core::int*}) →* core::int*}); |
| self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t25 = c in let final core::int* #t26 = self::read(12) in let final core::int* #t27 = self::read(23) in #t25.{self::Class::field7}(a: #t26, b: #t27){({a: core::int*, b: core::int*}) →* core::int*}); |
| self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t28 = c in let final core::int* #t29 = self::read(23) in let final core::int* #t30 = self::read(12) in #t28.{self::Class::field7}(b: #t29, a: #t30){({a: core::int*, b: core::int*}) →* core::int*}); |
| } |
| static method callGetter(self::Class* c) → dynamic { |
| self::expect(0, c.{self::Class::getter1a}()); |
| self::expect(0, c.{self::Class::getter1b}(){() →* core::int*}); |
| self::expect(42.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t31 = c in let final core::int* #t32 = self::read(42) in #t31.{self::Class::getter2}(#t32){(core::int*) →* core::int*}); |
| self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t33 = c in let final core::int* #t34 = self::read(12) in let final core::int* #t35 = self::read(23) in #t33.{self::Class::getter3}(#t34, #t35){(core::int*, core::int*) →* core::int*}); |
| self::expect(12, let final self::Class* #t36 = c in let final core::int* #t37 = self::read(12) in #t36.{self::Class::getter4}(#t37){(core::int*, [core::int*]) →* core::int*}); |
| self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t38 = c in let final core::int* #t39 = self::read(12) in let final core::int* #t40 = self::read(23) in #t38.{self::Class::getter4}(#t39, #t40){(core::int*, [core::int*]) →* core::int*}); |
| self::expect(0, c.{self::Class::getter5}(){([core::int*, core::int*]) →* core::int*}); |
| self::expect(12, let final self::Class* #t41 = c in let final core::int* #t42 = self::read(12) in #t41.{self::Class::getter5}(#t42){([core::int*, core::int*]) →* core::int*}); |
| self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t43 = c in let final core::int* #t44 = self::read(12) in let final core::int* #t45 = self::read(23) in #t43.{self::Class::getter5}(#t44, #t45){([core::int*, core::int*]) →* core::int*}); |
| self::expect(12, let final self::Class* #t46 = c in let final core::int* #t47 = self::read(12) in #t46.{self::Class::getter6}(#t47){(core::int*, {b: core::int*}) →* core::int*}); |
| self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t48 = c in let final core::int* #t49 = self::read(12) in let final core::int* #t50 = self::read(23) in #t48.{self::Class::getter6}(#t49, b: #t50){(core::int*, {b: core::int*}) →* core::int*}); |
| self::expect(0, c.{self::Class::getter7}(){({a: core::int*, b: core::int*}) →* core::int*}); |
| self::expect(12, let final self::Class* #t51 = c in let final core::int* #t52 = self::read(12) in #t51.{self::Class::getter7}(a: #t52){({a: core::int*, b: core::int*}) →* core::int*}); |
| self::expect(23.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t53 = c in let final core::int* #t54 = self::read(23) in #t53.{self::Class::getter7}(b: #t54){({a: core::int*, b: core::int*}) →* core::int*}); |
| self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t55 = c in let final core::int* #t56 = self::read(12) in let final core::int* #t57 = self::read(23) in #t55.{self::Class::getter7}(a: #t56, b: #t57){({a: core::int*, b: core::int*}) →* core::int*}); |
| self::expect(11.{core::int::unary-}(){() →* core::int*}, let final self::Class* #t58 = c in let final core::int* #t59 = self::read(23) in let final core::int* #t60 = self::read(12) in #t58.{self::Class::getter7}(b: #t59, a: #t60){({a: core::int*, b: core::int*}) →* core::int*}); |
| } |
| static method expect(dynamic expected, dynamic actual) → dynamic { |
| self::enableRead = true; |
| if(!(expected =={core::Object::==}{(core::Object*) →* core::bool*} actual)) |
| throw "Expected ${expected}, ${actual}"; |
| } |
| |
| constants { |
| #C1 = tearoff self::method1 |
| #C2 = tearoff self::method2 |
| #C3 = tearoff self::method3 |
| #C4 = tearoff self::method4 |
| #C5 = tearoff self::method5 |
| #C6 = tearoff self::method6 |
| #C7 = tearoff self::method7 |
| #C8 = 0 |
| } |