// Copyright (c) 2015, 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 = 2.9

// Regression test for http://dartbug.com/22987.
// Ensure that functions whose signature only differs in optionality of
// parameters are reflected correctly.

library optional_parameter_test;

import "dart:mirrors";
import 'package:expect/expect.dart';

class A {
  foo(int x) => x;
}

class B {
  foo([int x = -1]) => x + 1;
}

main() {
  var x = {};
  x["A"] = reflect(new A());
  x["B"] = reflect(new B());

  Expect.equals(1, x["A"].invoke(#foo, [1]).reflectee);
  Expect.equals(2, x["B"].invoke(#foo, [1]).reflectee);
}
