blob: c68f17afa569575a5605d4d45d8a0278f16b778b [file] [log] [blame]
// 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.
typedef T F<T>(T t);
class B<T extends F<T>> {}
class C<T extends F<C<T>>> {}
class D extends B<D> {
D foo(D x) => x;
D call(D x) => x;
D bar(D x) => x;
}
class E extends C<E> {
C<E> foo(C<E> x) => x;
C<E> call(C<E> x) => x;
C<E> bar(C<E> x) => x;
}
main() {
F<D> fd = new D();
var d = fd(fd);
print(d);
F<E> fe = new E();
var e = fe(fe);
print(e);
}