// 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 compile error is thrown if extension type variable is
/// higher order.
/// @author iarkh@unipro.ru



extension IncorrectExtension<T1, T2> on T1<T2> {
//                                      ^
// [analyzer] unspecified
// [cfe] unspecified
  void testme() {}
}

main() {
}
