// 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.
// VMOptions=--checked
//
// Dart test program for testing optional positional parameters in type tests.

main() {
  Function anyFunction;
  void acceptFunNumOptBool(void funNumOptBool(num n, [bool b])) { };
  void funNum(num n) { };
  void funNumBool(num n, bool b) { };
  void funNumOptBool(num n, [bool b = true]) { };
  void funNumOptBoolX(num n, [bool x = true]) { };
  anyFunction = funNum;
  anyFunction = funNumBool;
  anyFunction = funNumOptBool;
  anyFunction = funNumOptBoolX;
  acceptFunNumOptBool(funNumOptBool);
  acceptFunNumOptBool(funNumOptBoolX);
  acceptFunNumOptBool(funNum);  /// 01: runtime error
  acceptFunNumOptBool(funNumBool);  /// 02: static type warning, runtime error
}
