// Copyright (c) 2011, 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.
// Dart test for testing order of constructor invocation.

var trace = "";

int rec(int i) {
  trace = trace.concat("$i ");
  return i;
}

class A {
  A(int x) : x = rec(2) {
    Expect.equals(1, x);  // Parameter x
    Expect.equals(2, this.x);
    rec(5);
  }
  final int x;
}

class B extends A {
  B(this.a, int y, int z)
      : super(rec(1)), z = rec(3), y = rec(4) {
    rec(6);
  }
  int a;
  int y;
  int z;
}

main() {
  var test = new B(rec(0), 0, 0);
  Expect.equals(0, test.a);
  Expect.equals(2, test.x);
  Expect.equals(4, test.y);
  Expect.equals(3, test.z);
  Expect.equals("0 1 2 3 4 5 6 ", trace);
}

