Index: pkg/front_end/testcases/super_rasta_copy.dart.strong.expect |
diff --git a/pkg/front_end/testcases/super_rasta_copy.dart.strong.expect b/pkg/front_end/testcases/super_rasta_copy.dart.strong.expect |
new file mode 100644 |
index 0000000000000000000000000000000000000000..87ae1479c8382e226230ed70e5d4cbffbded3f91 |
--- /dev/null |
+++ b/pkg/front_end/testcases/super_rasta_copy.dart.strong.expect |
@@ -0,0 +1,248 @@ |
+library; |
+import self as self; |
+import "dart:core" as core; |
+ |
+class A extends core::Object { |
+ field dynamic a = null; |
+ field dynamic b = null; |
+ field dynamic c = null; |
+ field dynamic d = null; |
+ final field dynamic f = null; |
+ constructor •() → void |
+ : super core::Object::•() |
+ ; |
+ get e() → dynamic |
+ return null; |
+ set g(dynamic _) → void {} |
+ get h() → dynamic |
+ return null; |
+ set h(dynamic _) → void {} |
+ get i() → dynamic |
+ return null; |
+ operator [](dynamic _) → dynamic |
+ return null; |
+ operator []=(dynamic a, dynamic b) → dynamic {} |
+ operator ~() → dynamic |
+ return 117; |
+ operator unary-() → dynamic |
+ return 117; |
+ operator ==(dynamic other) → core::bool |
+ return true; |
+ method m() → void {} |
+} |
+class B extends self::A { |
+ final field dynamic d = null; |
+ constructor •() → void |
+ : super self::A::•() |
+ ; |
+ get b() → dynamic |
+ return null; |
+ set c(dynamic x) → void {} |
+ set i(dynamic x) → void {} |
+} |
+class C extends self::B { |
+ constructor •() → void |
+ : super self::B::•() |
+ ; |
+ method test() → dynamic { |
+ super.{self::A::~}(); |
+ self::use(super.{self::A::~}()); |
+ super.{self::A::unary-}(); |
+ self::use(super.{self::A::unary-}()); |
+ super.{self::A::==}(87); |
+ self::use(super.{self::A::==}(87)); |
+ !super.{self::A::==}(87); |
+ self::use(!super.{self::A::==}(87)); |
+ super.{self::A::a}; |
+ self::use(super.{self::A::a}); |
+ super.{self::B::b}; |
+ self::use(super.{self::B::b}); |
+ super.{self::A::c}; |
+ self::use(super.{self::A::c}); |
+ super.{self::B::d}; |
+ self::use(super.{self::B::d}); |
+ super.{self::A::e}; |
+ self::use(super.{self::A::e}); |
+ super.{self::A::f}; |
+ self::use(super.{self::A::f}); |
+ super.g; |
+ self::use(super.g); |
+ super.{self::A::h}; |
+ self::use(super.{self::A::h}); |
+ super.{self::A::i}; |
+ self::use(super.{self::A::i}); |
+ super.{self::A::[]}(87); |
+ self::use(super.{self::A::[]}(87)); |
+ super.{self::A::m}; |
+ self::use(super.{self::A::m}); |
+ super.{self::A::a} = super.{self::A::a}.+(1); |
+ self::use(let final dynamic #t1 = super.{self::A::a} in let final dynamic #t2 = super.{self::A::a} = #t1.+(1) in #t1); |
+ super.{self::A::b} = super.{self::B::b}.+(1); |
+ self::use(let final dynamic #t3 = super.{self::B::b} in let final dynamic #t4 = super.{self::A::b} = #t3.+(1) in #t3); |
+ super.{self::B::c} = super.{self::A::c}.+(1); |
+ self::use(let final dynamic #t5 = super.{self::A::c} in let final dynamic #t6 = super.{self::B::c} = #t5.+(1) in #t5); |
+ super.{self::A::d} = super.{self::B::d}.+(1); |
+ self::use(let final dynamic #t7 = super.{self::B::d} in let final dynamic #t8 = super.{self::A::d} = #t7.+(1) in #t7); |
+ super.e = super.{self::A::e}.+(1); |
+ self::use(let final dynamic #t9 = super.{self::A::e} in let final dynamic #t10 = super.e = #t9.+(1) in #t9); |
+ super.f = super.{self::A::f}.+(1); |
+ self::use(let final dynamic #t11 = super.{self::A::f} in let final dynamic #t12 = super.f = #t11.+(1) in #t11); |
+ super.{self::A::g} = super.g.+(1); |
+ self::use(let final dynamic #t13 = super.g in let final dynamic #t14 = super.{self::A::g} = #t13.+(1) in #t13); |
+ super.{self::A::h} = super.{self::A::h}.+(1); |
+ self::use(let final dynamic #t15 = super.{self::A::h} in let final dynamic #t16 = super.{self::A::h} = #t15.+(1) in #t15); |
+ super.{self::B::i} = super.{self::A::i}.+(1); |
+ self::use(let final dynamic #t17 = super.{self::A::i} in let final dynamic #t18 = super.{self::B::i} = #t17.+(1) in #t17); |
+ let final dynamic #t19 = 87 in super.{self::A::[]=}(#t19, super.{self::A::[]}(#t19).+(1)); |
+ self::use(let final dynamic #t20 = 87 in let final dynamic #t21 = super.{self::A::[]}(#t20) in let final dynamic #t22 = super.{self::A::[]=}(#t20, #t21.+(1)) in #t21); |
+ super.m = super.{self::A::m}.+(1); |
+ self::use(let final dynamic #t23 = super.{self::A::m} in let final dynamic #t24 = super.m = #t23.+(1) in #t23); |
+ super.{self::A::a} = super.{self::A::a}.+(1); |
+ self::use(super.{self::A::a} = super.{self::A::a}.+(1)); |
+ super.{self::A::b} = super.{self::B::b}.+(1); |
+ self::use(super.{self::A::b} = super.{self::B::b}.+(1)); |
+ super.{self::B::c} = super.{self::A::c}.+(1); |
+ self::use(super.{self::B::c} = super.{self::A::c}.+(1)); |
+ super.{self::A::d} = super.{self::B::d}.+(1); |
+ self::use(super.{self::A::d} = super.{self::B::d}.+(1)); |
+ super.e = super.{self::A::e}.+(1); |
+ self::use(super.e = super.{self::A::e}.+(1)); |
+ super.f = super.{self::A::f}.+(1); |
+ self::use(super.f = super.{self::A::f}.+(1)); |
+ super.{self::A::g} = super.g.+(1); |
+ self::use(super.{self::A::g} = super.g.+(1)); |
+ super.{self::A::h} = super.{self::A::h}.+(1); |
+ self::use(super.{self::A::h} = super.{self::A::h}.+(1)); |
+ super.{self::B::i} = super.{self::A::i}.+(1); |
+ self::use(super.{self::B::i} = super.{self::A::i}.+(1)); |
+ let final dynamic #t25 = 87 in let final dynamic #t26 = super.{self::A::[]}(#t25).+(1) in let final dynamic #t27 = super.{self::A::[]=}(#t25, #t26) in #t26; |
+ self::use(let final dynamic #t28 = 87 in let final dynamic #t29 = super.{self::A::[]}(#t28).+(1) in let final dynamic #t30 = super.{self::A::[]=}(#t28, #t29) in #t29); |
+ super.m = super.{self::A::m}.+(1); |
+ self::use(super.m = super.{self::A::m}.+(1)); |
+ super.{self::A::a}.call(); |
+ self::use(super.{self::A::a}.call()); |
+ super.{self::B::b}.call(); |
+ self::use(super.{self::B::b}.call()); |
+ super.{self::A::c}.call(); |
+ self::use(super.{self::A::c}.call()); |
+ super.{self::B::d}.call(); |
+ self::use(super.{self::B::d}.call()); |
+ super.{self::A::e}.call(); |
+ self::use(super.{self::A::e}.call()); |
+ super.{self::A::f}.call(); |
+ self::use(super.{self::A::f}.call()); |
+ super.g(); |
+ self::use(super.g()); |
+ super.{self::A::h}.call(); |
+ self::use(super.{self::A::h}.call()); |
+ super.{self::A::i}.call(); |
+ self::use(super.{self::A::i}.call()); |
+ super.{self::A::[]}(87).call(); |
+ self::use(super.{self::A::[]}(87).call()); |
+ super.{self::A::m}(); |
+ self::use(super.{self::A::m}()); |
+ super.{self::A::m}(87); |
+ self::use(super.{self::A::m}(87)); |
+ super.{self::A::a} = 42; |
+ self::use(super.{self::A::a} = 42); |
+ super.{self::A::b} = 42; |
+ self::use(super.{self::A::b} = 42); |
+ super.{self::B::c} = 42; |
+ self::use(super.{self::B::c} = 42); |
+ super.{self::A::d} = 42; |
+ self::use(super.{self::A::d} = 42); |
+ super.e = 42; |
+ self::use(super.e = 42); |
+ super.f = 42; |
+ self::use(super.f = 42); |
+ super.{self::A::g} = 42; |
+ self::use(super.{self::A::g} = 42); |
+ super.{self::A::h} = 42; |
+ self::use(super.{self::A::h} = 42); |
+ super.{self::B::i} = 42; |
+ self::use(super.{self::B::i} = 42); |
+ super.{self::A::[]=}(87, 42); |
+ self::use(let final dynamic #t31 = 87 in let final dynamic #t32 = 42 in let final dynamic #t33 = super.{self::A::[]=}(#t31, #t32) in #t32); |
+ super.m = 42; |
+ self::use(super.m = 42); |
+ super.{self::A::a}.==(null) ? super.{self::A::a} = 42 : null; |
+ self::use(let final dynamic #t34 = super.{self::A::a} in #t34.==(null) ? super.{self::A::a} = 42 : #t34); |
+ super.{self::B::b}.==(null) ? super.{self::A::b} = 42 : null; |
+ self::use(let final dynamic #t35 = super.{self::B::b} in #t35.==(null) ? super.{self::A::b} = 42 : #t35); |
+ super.{self::A::c}.==(null) ? super.{self::B::c} = 42 : null; |
+ self::use(let final dynamic #t36 = super.{self::A::c} in #t36.==(null) ? super.{self::B::c} = 42 : #t36); |
+ super.{self::B::d}.==(null) ? super.{self::A::d} = 42 : null; |
+ self::use(let final dynamic #t37 = super.{self::B::d} in #t37.==(null) ? super.{self::A::d} = 42 : #t37); |
+ super.{self::A::e}.==(null) ? super.e = 42 : null; |
+ self::use(let final dynamic #t38 = super.{self::A::e} in #t38.==(null) ? super.e = 42 : #t38); |
+ super.{self::A::f}.==(null) ? super.f = 42 : null; |
+ self::use(let final dynamic #t39 = super.{self::A::f} in #t39.==(null) ? super.f = 42 : #t39); |
+ super.g.==(null) ? super.{self::A::g} = 42 : null; |
+ self::use(let final dynamic #t40 = super.g in #t40.==(null) ? super.{self::A::g} = 42 : #t40); |
+ super.{self::A::h}.==(null) ? super.{self::A::h} = 42 : null; |
+ self::use(let final dynamic #t41 = super.{self::A::h} in #t41.==(null) ? super.{self::A::h} = 42 : #t41); |
+ super.{self::A::i}.==(null) ? super.{self::B::i} = 42 : null; |
+ self::use(let final dynamic #t42 = super.{self::A::i} in #t42.==(null) ? super.{self::B::i} = 42 : #t42); |
+ let final dynamic #t43 = 87 in super.{self::A::[]}(#t43).==(null) ? let final dynamic #t44 = 42 in let final dynamic #t45 = super.{self::A::[]=}(#t43, #t44) in #t44 : null; |
+ self::use(let final dynamic #t46 = 87 in let final dynamic #t47 = super.{self::A::[]}(#t46) in #t47.==(null) ? let final dynamic #t48 = 42 in let final dynamic #t49 = super.{self::A::[]=}(#t46, #t48) in #t48 : #t47); |
+ super.{self::A::m}.==(null) ? super.m = 42 : null; |
+ self::use(let final dynamic #t50 = super.{self::A::m} in #t50.==(null) ? super.m = 42 : #t50); |
+ super.{self::A::a} = super.{self::A::a}.+(42); |
+ self::use(super.{self::A::a} = super.{self::A::a}.+(42)); |
+ super.{self::A::b} = super.{self::B::b}.+(42); |
+ self::use(super.{self::A::b} = super.{self::B::b}.+(42)); |
+ super.{self::B::c} = super.{self::A::c}.+(42); |
+ self::use(super.{self::B::c} = super.{self::A::c}.+(42)); |
+ super.{self::A::d} = super.{self::B::d}.+(42); |
+ self::use(super.{self::A::d} = super.{self::B::d}.+(42)); |
+ super.e = super.{self::A::e}.+(42); |
+ self::use(super.e = super.{self::A::e}.+(42)); |
+ super.f = super.{self::A::f}.+(42); |
+ self::use(super.f = super.{self::A::f}.+(42)); |
+ super.{self::A::g} = super.g.+(42); |
+ self::use(super.{self::A::g} = super.g.+(42)); |
+ super.{self::A::h} = super.{self::A::h}.+(42); |
+ self::use(super.{self::A::h} = super.{self::A::h}.+(42)); |
+ super.{self::B::i} = super.{self::A::i}.+(42); |
+ self::use(super.{self::B::i} = super.{self::A::i}.+(42)); |
+ let final dynamic #t51 = 87 in super.{self::A::[]=}(#t51, super.{self::A::[]}(#t51).+(42)); |
+ self::use(let final dynamic #t52 = 87 in let final dynamic #t53 = super.{self::A::[]}(#t52).+(42) in let final dynamic #t54 = super.{self::A::[]=}(#t52, #t53) in #t53); |
+ super.m = super.{self::A::m}.+(42); |
+ self::use(super.m = super.{self::A::m}.+(42)); |
+ super.{self::A::a} = super.{self::A::a}.-(42); |
+ self::use(super.{self::A::a} = super.{self::A::a}.-(42)); |
+ super.{self::A::b} = super.{self::B::b}.-(42); |
+ self::use(super.{self::A::b} = super.{self::B::b}.-(42)); |
+ super.{self::B::c} = super.{self::A::c}.-(42); |
+ self::use(super.{self::B::c} = super.{self::A::c}.-(42)); |
+ super.{self::A::d} = super.{self::B::d}.-(42); |
+ self::use(super.{self::A::d} = super.{self::B::d}.-(42)); |
+ super.e = super.{self::A::e}.-(42); |
+ self::use(super.e = super.{self::A::e}.-(42)); |
+ super.f = super.{self::A::f}.-(42); |
+ self::use(super.f = super.{self::A::f}.-(42)); |
+ super.{self::A::g} = super.g.-(42); |
+ self::use(super.{self::A::g} = super.g.-(42)); |
+ super.{self::A::h} = super.{self::A::h}.-(42); |
+ self::use(super.{self::A::h} = super.{self::A::h}.-(42)); |
+ super.{self::B::i} = super.{self::A::i}.-(42); |
+ self::use(super.{self::B::i} = super.{self::A::i}.-(42)); |
+ let final dynamic #t55 = 87 in super.{self::A::[]=}(#t55, super.{self::A::[]}(#t55).-(42)); |
+ self::use(let final dynamic #t56 = 87 in let final dynamic #t57 = super.{self::A::[]}(#t56).-(42) in let final dynamic #t58 = super.{self::A::[]=}(#t56, #t57) in #t57); |
+ super.m = super.{self::A::m}.-(42); |
+ self::use(super.m = super.{self::A::m}.-(42)); |
+ } |
+} |
+static method use(dynamic x) → dynamic { |
+ if(x.==(new core::DateTime::now().{core::DateTime::millisecondsSinceEpoch})) |
+ throw "Shouldn't happen"; |
+} |
+static method main() → dynamic { |
+ try { |
+ new self::C::•().{self::C::test}(); |
+ } |
+ on core::NoSuchMethodError catch(no-exception-var) { |
+ return; |
+ } |
+ throw "Test failed"; |
+} |