// 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 Calling a redirecting factory constructor k causes the
/// constructor k' denoted by type (respectively, type.identifier) to be called
/// with the actual arguments passed to k, and returns the result of k' as the
/// result of k. The resulting constructor call is governed by the same rules
/// as an instance creation expression using new.
/// @description Checks that compile error occurs when referenced type is not
/// defined or refers to non class or non constructor.
/// @author ilya


function() {}
var variable;

class F {
  factory F() = C;
//              ^
// [analyzer] unspecified
// [cfe] unspecified
  factory F.foo() = function;
//                  ^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
  factory F.bar() = variable;
//                  ^^^^^^^^
// [analyzer] unspecified
// [cfe] unspecified
  factory F.baz() = D.baz;
  //                ^^^^^
  // [analyzer] COMPILE_TIME_ERROR.REDIRECT_TO_MISSING_CONSTRUCTOR
  // [cfe] Redirection constructor target not found: 'D.baz'
}

class D {
  void baz() {}
}

main() {
}
