/*
 * 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.
 */
/**
 * @assertion If e of the form
 * const T(a1, ..., an, xn+1: an+1, ..., xn+k: an+k) it is a compile-time
 * error if the type T does not declare a constant constructor with the same
 * name as the declaration of T.
 * @description Checks that it is a compile-time error if T does not declare a
 * constant constructor with the same name as the declaration of T.
 * @compile-error
 * @author msyabro
 */

class T {
  const T.name();
}

main() {
  const T();
}
