| // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| // This test verifies that super calls get reordered properly. It exercises the |
| // case where the arguments to super have a type other than `dynamic`. |
| String events = ''; |
| |
| int f(x) { |
| events += 'f($x)\n'; |
| return 0; |
| } |
| |
| String g(x) { |
| events += 'g($x)\n'; |
| return 'foo'; |
| } |
| |
| class B { |
| num x; |
| String y; |
| B(this.x, this.y) { |
| events += 'super($x, $y)\n'; |
| } |
| } |
| |
| class C extends B { |
| final z; |
| C() |
| : super(f(1), g(2)), |
| z = f(3); |
| } |
| |
| main() { |
| new C(); |
| if (events != 'f(1)\ng(2)\nf(3)\nsuper(0, foo)\n') { |
| throw 'Unexpected sequence of events: $events'; |
| } |
| } |