| // 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. |
| |
| import "package:expect/expect.dart"; |
| |
| List<T?> staticFn<T>([ |
| T? a1, |
| T? a2, |
| T? a3, |
| T? a4, |
| T? a5, |
| T? a6, |
| T? a7, |
| T? a8, |
| T? a9, |
| T? a10, |
| ]) { |
| return <T?>[a1, a2, a3, a4, a5, a6, a7, a8, a9, a10]; |
| } |
| |
| class C<CT> { |
| List<T?> memberFn<T>([ |
| T? a1, |
| T? a2, |
| T? a3, |
| T? a4, |
| T? a5, |
| T? a6, |
| T? a7, |
| T? a8, |
| T? a9, |
| T? a10, |
| ]) { |
| return <T?>[a1, a2, a3, a4, a5, a6, a7, a8, a9, a10]; |
| } |
| |
| // Intercepted, e.g. on JSArray. |
| List<T?> map<T>([ |
| T? a1, |
| T? a2, |
| T? a3, |
| T? a4, |
| T? a5, |
| T? a6, |
| T? a7, |
| T? a8, |
| T? a9, |
| T? a10, |
| ]) { |
| return <T?>[a1, a2, a3, a4, a5, a6, a7, a8, a9, a10]; |
| } |
| } |
| |
| check(a, b) { |
| print('a: $a\nb: $b'); |
| Expect.equals(a.toString(), b.toString()); |
| } |
| |
| main() { |
| check( |
| '[1, 2, 3, null, null, null, null, null, null, null]', |
| Function.apply(staticFn, [1, 2, 3]), |
| ); |
| |
| check( |
| '[1, 2, 3, 4, null, null, null, null, null, null]', |
| Function.apply(staticFn, [1, 2, 3, 4]), |
| ); |
| |
| check( |
| '[1, 2, 3, 4, 5, 6, 7, null, null, null]', |
| Function.apply(staticFn, [1, 2, 3, 4, 5, 6, 7]), |
| ); |
| |
| var o = new C<num>(); |
| dynamic memberFn1 = o.map; |
| |
| check( |
| '[1, 2, 3, null, null, null, null, null, null, null]', |
| Function.apply(memberFn1, [1, 2, 3]), |
| ); |
| |
| check( |
| '[1, 2, 3, 4, null, null, null, null, null, null]', |
| Function.apply(memberFn1, [1, 2, 3, 4]), |
| ); |
| |
| check( |
| '[1, 2, 3, 4, 5, 6, 7, null, null, null]', |
| Function.apply(memberFn1, [1, 2, 3, 4, 5, 6, 7]), |
| ); |
| |
| dynamic memberFn2 = o.memberFn; |
| |
| check( |
| '[1, 2, 3, null, null, null, null, null, null, null]', |
| Function.apply(memberFn2, [1, 2, 3]), |
| ); |
| |
| check( |
| '[1, 2, 3, 4, null, null, null, null, null, null]', |
| Function.apply(memberFn2, [1, 2, 3, 4]), |
| ); |
| |
| check( |
| '[1, 2, 3, 4, 5, 6, 7, null, null, null]', |
| Function.apply(memberFn2, [1, 2, 3, 4, 5, 6, 7]), |
| ); |
| |
| // TODO(sra): Apply of instantiations |
| } |