blob: 6e823e8cdfe0a7d1c3569610eda0a24ad9dc3de7 [file] [log] [blame]
// 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 various correct declarations with only required
* formal parameters do not cause any errors.
* @author msyabro
*/
func_func(void g(var x)?) {}
func_var(var x) {}
func_final(final x) {}
func_finalTyped(final int? x) {}
func_typed(int? $) {}
func_undeclared(z) {}
func(var x, final y, int? z, a, void f()?) {}
class A<TypeParam> {
A(this.x);
A.named(TypeParam this.x);
var x;
method_func(void g(var x)? ) {}
method_var(var x) {}
method_final(final x) {}
method_finalTyped(final int? x) {}
method_typed(int? x) {}
method_undeclared(z) {}
method(var x, final y, int? z, a, void f()?) {}
}
main() {
func_func(null);
func_var(null);
func_final(null);
func_finalTyped(null);
func_typed(null);
func_undeclared(1);
func(1, 2, 3, 4, null);
A a = new A(1);
a = new A.named(1);
a.method_func(null);
a.method_var(null);
a.method_final(null);
a.method_finalTyped(null);
a.method_typed(null);
a.method_undeclared(1);
a.method(1, 2, 3, 4, null);
}