// Copyright (c) 2019, 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 If both the extension and the method is generic, then inference
 * must infer the extension type parameters first, to figure out whether the
 * extension applies, and only then start inferring method type parameters. As
 * mentioned above, the inference is similar to other cases of chained inference.
 * @description Check that two-step type inference forces correct type parameter
 * choice and error is thrown if method parameter is of incorrect type.
 * @author iarkh@unipro.ru
 */


extension SuperList<T> on List<T> {
  void checkme1<R>(R i) {}
  void checkme2<R extends T>(R i) {}
}

main() {
  List<String> list = [];
  list.checkme1(42);
  list.checkme1<int>(42);
  list.checkme2(42);
  //   ^^^^^^^^
  // [analyzer] COMPILE_TIME_ERROR.COULD_NOT_INFER
  // [cfe] Inferred type argument 'int' doesn't conform to the bound 'T' of the type variable 'R' on 'SuperList|checkme2'.
  list.checkme2<int>(42);
  //   ^
  // [cfe] Type argument 'int' doesn't conform to the bound 'T' of the type variable 'R' on 'SuperList|checkme2'.
  //            ^^^
  // [analyzer] COMPILE_TIME_ERROR.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
}
