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