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

// Check that calling a constructor of a class that cannot be resolved causes
// a runtime error.

import 'dart:math';

never() {
  Random r = new Random();
  int r1 = r.nextInt(1000);
  int r2 = r.nextInt(1000);
  int r3 = r.nextInt(1000);
  return (r1 > r3) && (r2 > r3) && (r3 > r1 + r2);
}

main() {
  if (never()) {
    // These should not produce errors because the calls are never executed.
    new A();         /// 01: static type warning
    new A.foo();     /// 02: static type warning
    new lib.A();     /// 03: static type warning
  }

  new A();         /// 04: runtime error
  new A.foo();     /// 05: runtime error
  new lib.A();     /// 06: runtime error

  var ex;                    /// 07: static type warning
  try {                      /// 07: continued
    new A();                 /// 07: continued
  } catch (e) {              /// 07: continued
    ex = e;                  /// 07: continued
  }                          /// 07: continued
  Expect.isTrue(ex != null); /// 07: continued
}
