// 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  * @assertion A constructor name always begins with the name of its immediately
/// enclosing class, and may optionally be followed by a dot and an identifier
/// id. It is a compile-time error if the name of a constructor is not a
/// constructor name.
/// A constructor declaration may conflict with static member declarations
/// (10.11).
/// Let C be a class. It is a compile-time error if C declares a
///  • constructor named C.n and a static member with basename n.
///
/// @description Checks that a compile-error is produced when a constructor's id
/// coincides with the name of a static field declared in the same class.
/// @author kaigorodov


class C {
  C.foo() {}
//  ^^^
// [analyzer] unspecified
// [cfe] unspecified

  static var foo;
//           ^^^
// [cfe] unspecified
}

main() {
  new C.foo();
}
