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

import "package:expect/expect.dart";

typedef U F<T, U>(T x);

class C<T> {
  T f(List<T> x) {
    throw "uncalled";
  }
}

F<List<num>, num> g(C<num> c) {
  return c.f;
}

void main() {
  var tearoff = g(new C<int>());
  // Since C.f's x parameter is covariant, its type is changed to Object when
  // determining the type of the tearoff.  So the type of the tearoff should be
  // `(Object) -> int`.  (Not, for example, `(List<Object>) -> int` or
  // `(List<Object>) -> Object`)
  Expect.isTrue(tearoff is F<Object, int>);
  // Because the function accepts any object, we can pass strings to it.  This
  // will not work in Dart 1.
  Expect.isTrue(tearoff is F<String, int>);
}
