// Copyright (c) 2018, 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

topFn<T extends num>(T x) {
  print(T);
}

class C<T> {
  instanceFn<S extends T>(S x) {
    print(S);
  }
}

class D<T> extends C<T> {
  void foo() {
    void Function(int) k = instanceFn;
    //                     ^^^^^^^^^^
    // [analyzer] COMPILE_TIME_ERROR.COULD_NOT_INFER
  }
}

void main() {
  localFn<T extends num>(T x) {
    print(T);
  }

  void Function(String) k0 = localFn;
  //                         ^^^^^^^
  // [analyzer] COMPILE_TIME_ERROR.COULD_NOT_INFER
  void Function(String) k1 = topFn;
  //                         ^^^^^
  // [analyzer] COMPILE_TIME_ERROR.COULD_NOT_INFER
}
