| // Copyright (c) 2018, 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 |
| |
| import "package:expect/expect.dart"; |
| |
| makeFn() { |
| return <T extends num>({T a1, T a2, T a3, T a4, T a5}) { |
| return <T>[a1, a2, a3, a4, a5]; |
| }; |
| } |
| |
| staticFn<T extends num>({T a1, T a2, T a3, T a4, T a5, T xx}) { |
| return <T>[a1, a2, a3, a4, a5, xx]; |
| } |
| |
| class CCC { |
| memberFn<T extends num>({T a1, T a2, T a3, T a4, T a5, T yy}) { |
| return <T>[a1, a2, a3, a4, a5, yy]; |
| } |
| } |
| |
| check(a, b) { |
| print('a: $a\nb: $b'); |
| Expect.equals(a.toString(), b.toString()); |
| } |
| |
| main() { |
| check('[null, 33, null, 11, 22, null]', |
| Function.apply(new CCC().memberFn, [], {#a4: 11, #a5: 22, #a2: 33})); |
| |
| Expect.throwsTypeError( |
| () => Function.apply(new CCC().memberFn, [], {#a3: 'hi'})); |
| |
| check('[11, 22, 33, null, null]', |
| Function.apply(makeFn(), [], {#a1: 11, #a2: 22, #a3: 33})); |
| |
| check('[null, 33, null, 11, 22]', |
| Function.apply(makeFn(), [], {#a4: 11, #a5: 22, #a2: 33})); |
| |
| Expect.throwsTypeError(() => Function.apply(makeFn(), [], {#a3: 'hi'})); |
| |
| check('[null, 33, null, 11, 22, null]', |
| Function.apply(staticFn, [], {#a4: 11, #a5: 22, #a2: 33})); |
| |
| Expect.throwsTypeError(() => Function.apply(staticFn, [], {#a3: 'hi'})); |
| } |