// 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.

/// @description Regression test for the Issue 34741: Analyzer doesn't allow
/// function to use type parameter [<Instance of 'TypeParameterMember'>] as a
/// type argument whereas dart does allow this.
/// @Issue 34741
/// @author iarkh@unipro.ru

Type typeOf<X>() => X;

typedef G = Function<X extends num>();
typedef G1<X> = Function();

main() {
  typeOf<G>();
//^
// [cfe] A generic function type can't be used as a type argument.
//       ^
// [analyzer] COMPILE_TIME_ERROR.GENERIC_FUNCTION_TYPE_CANNOT_BE_TYPE_ARGUMENT
  typeOf<G1>();
}
