blob: dd9d1f65887a03b408116d2fc7952d5dfbf4bfd2 [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.
// @dart = 2.9
/// @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
/// @reviewer iefremov
/// @reviewer rodionov
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);
}