blob: 48c5c0cfa622d4289a245aa764572de0ebf60fe2 [file] [log] [blame]
// Copyright (c) 2023, 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 Contravariant<T> = void Function(T);
typedef Invariant<T> = void Function<S extends T>();
typedef Covariant<T> = T Function();
typedef Bivariant<T> = T Function(T);
extension type ET_Contravariant<T>(void Function(T) f) /* Error */ {}
extension type ET_Invariant<T>(void Function<S extends T>() f) /* Error */ {}
extension type ET_Covariant<T>(T Function() f) /* Ok */ {}
extension type ET_Bivariant<T>(T Function(T) f) /* Error */ {}
extension type ET_ContravariantAlias<T>(Contravariant<T> f) /* Error */ {}
extension type ET_InvariantAlias<T>(Invariant<T> f) /* Error */ {}
extension type ET_CovariantAlias<T>(Covariant<T> f) /* Ok */ {}
extension type ET_BivariantAlias<T>(Bivariant<T> f) /* Error */ {}
extension type ET_ContravariantAlias1<T>
(Contravariant<T> Function() f) /* Error */ {}
extension type ET_ContravariantAlias2<T>
(void Function(Covariant<T>) f) /* Error */ {}
extension type ET_CovariantAlias1<T>
(Covariant<T> Function() f) /* Ok */ {}
extension type ET_CovariantAlias2<T>
(void Function(Contravariant<T>) f) /* Ok */ {}