// Copyright (c) 2011, 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 A required formal parameter may be specied in one of three ways:
 *
 * • By means of a function signature that names the parameter and describes
 *   its type as a function type. It is a compile-time error if any default
 *   values are specied in the signature of such a function type.
 * • As an initializing formal, which is only valid as a parameter to a
 *   generative constructor.
 * • Via an ordinary variable declaration
 *
 * normalFormalParameter:
 *   functionSignature |
 *   fieldFormalParameter |
 *   simpleFormalParameter
 * ;
 * simpleFormalParameter:
 *   declaredIdentifier |
 *   metadata identifier
 * ;
 * fieldFormalParameter:
 *   metadata finalConstVarOrType? this '.' identifier formalParameterList?
 * ;
 * @description Checks that a functionSignature parameter cannot be final.
 * @compile-error
 * @author kaigorodov
 */

func(final x()) {
  return x();
}

main() {
  func(() {});
}
