// Copyright (c) 2012, 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 program for default constructors.

String message;

foo() {
  message += 'foo';
  return 1;
}

bar() {
  message += 'bar';
  return 2;
}

class X {
  var i;
  var j;
  X([a = 'defa', b = 'defb']) : this.i = a, this.j = b;
  X.foo() : this(b: 1, a: 2);
  X.bar() : this(
                     1,  /// 01: compile-time error
                     a: 2);
  X.baz() : this(a: 1, b: 2);
  X.qux() : this(1, 2);
  X.hest() : this();
  X.fisk() : this(b: bar(), a: foo());
  X.naebdyr() : this(a: foo(), b: bar());
}

test(x, a, b) {
  Expect.equals(x.i, a);
  Expect.equals(x.j, b);
}

main() {
  test(new X.foo(), 2, 1);
  test(new X.bar(), 2, 'defb');
  test(new X.baz(), 1, 2);
  test(new X.qux(), 1, 2);
  test(new X.hest(), 'defa', 'defb');

  message = '';
  new X.fisk();
  Expect.equals('barfoo', message);

  message = '';
  new X.naebdyr();
  Expect.equals('foobar', message);
}

Support named parameters for super initializers and redirections.
Support named parameters for super initializers and redirections.

Review URL: https://chromiumcodereview.appspot.com//9454014

git-svn-id: c93d8a2297af3b929165606efe145742a534bc71@4606 260f80e4-7a28-3924-810f-c04153c831b5
