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

// @dart = 2.9

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);
  //                  ^^^^^^
  // [analyzer] COMPILE_TIME_ERROR.INVALID_CAST_FUNCTION
  // [cfe] The local function has type 'void Function(num)' that isn't of expected type 'void Function(num, [bool])'.
  acceptFunNumOptBool(funNumBool);
  //                  ^^^^^^^^^^
  // [analyzer] COMPILE_TIME_ERROR.INVALID_CAST_FUNCTION
  // [cfe] The local function has type 'void Function(num, bool)' that isn't of expected type 'void Function(num, [bool])'.
}
