| // 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); |
| } |