// 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 Every function includes a formal parameter list, which consists
/// of a list of required parameters, followed by any optional parameters.
/// The optional parameters may be specified either as a set of named parameters
/// or as a list of positional parameters, but not both.
/// formalParameterList:
///   '(' ')' |
///   '('normalFormalParameters(',' optionalFormalParameters)?')' |
///   '('optionalFormalParameters')'
/// ;
/// normalFormalParameters:
///   normalFormalParameter(',' normalFormalParameter)*
/// ;
/// optionalFormalParameters:
///   optionalPositionalFormalParameters |
///   namedFormalParameters
/// ;
/// optionalPositionalFormalParameters:
///  `['defaultFormalParameter(`,' defaultFormalParameter)*`]'
/// ;
/// namedFormalParameters:
///  `{'defaultNamedParameter(`,' defaultNamedParameter)*`}'
/// ;
/// @description Checks correct syntax for specifying optional parameters.
/// @author msyabro


void f(var a, var b, [var c]) {}
void g([var a, var b]) {}
void h([var a]) {}
void f2(var a, var b, {var c}) {}
void g2({var a, var b}) {}
void h2({var a}) {}

main() {
  f(1, 1, 1);
  g(1, 1);
  h(1);
  f2(1, 1, c:1);
  g2(a:1, b:1);
  h2(a:1);
}
