// Copyright (c) 2021, 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 CONST_CANONICAL_TYPE(R Function<X extends B>(S)) = F*
///   where F = R1 Function<X extends B1>(S1)
///   and R1 = CONST_CANONICAL_TYPE(R)
///   and B1 = CONST_CANONICAL_TYPE(B)
///   and S1 = CONST_CANONICAL_TYPE(S)
/// Note, this generalizes to arbitrary number of type and term parameters.
///
/// @description Checks that CONST_CANONICAL_TYPE(R Function<X extends B>(S)) = F*
///
/// @author iarkh@unipro.ru

// SharedOptions=--enable-experiment=generic-metadata

import "const_evaluation_lib.dart";

typedef FUNC = int Function<X extends String>(double);

int testme<X extends String>(double d) => throw "Should not reach here";

main() {
  const c = C<FUNC>(testme);
}
