// 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 Evaluation of e proceeds as follows:
/// First, the argument list (a1, ..., an, xn+1: an+1, ..., xn+k: an+k )
/// is evaluated.
/// If T is a deferred type with prefix p, then if p has not been successfully
/// loaded, a dynamic error occurs.
/// Then, if q is a non-factory constructor of an abstract class then an
/// AbstractClassInstantiationError is thrown.
/// If T is malformed or if T is a type variable a compile error occurs.
/// If T or any of its superclasses is malbounded a compile error occurs.
/// Otherwise, if q is not defined or not accessible, a NoSuchMethodError is
/// thrown. If q has less than n positional parameters or more than n required
/// parameters, or if q lacks any of the keyword parameters
/// {xn+1, ..., xn+k}, a NoSuchMethodError is thrown.
/// @description  Checks that it is a compile error if q is a named non-factory
/// constructor of an abstract class.
/// @author kaigorodov


abstract class C {
  C.namedConstructor() {}
}

main() {
  new C.namedConstructor();
//    ^
// [analyzer] unspecified
// [cfe] unspecified
}
