// 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.

// Test that the constructor body of a superclass is invoked.

class Super {
  final superArgument;
  var superField;

  Super() : this.named(''); // Redirection is required to trigger the bug.

  Super.named(this.superArgument) {
    superField = 'fisk';
  }
}

class Sub extends Super {
  var subField;

  // Test for a bug when super() is the first initializer.
  Sub.first() : super(), subField = [];

  Sub.last() : subField = [], super();
}

main() {
  Expect.equals('fisk', new Sub.last().superField);
  Expect.equals('fisk', new Sub.first().superField);
}
