// 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 staticFn([ T? a1, T? a2, T? a3, T? a4, T? a5, T? a6, T? a7, T? a8, T? a9, T? a10, ]) { return [a1, a2, a3, a4, a5, a6, a7, a8, a9, a10]; } class C { List memberFn([ T? a1, T? a2, T? a3, T? a4, T? a5, T? a6, T? a7, T? a8, T? a9, T? a10, ]) { return [a1, a2, a3, a4, a5, a6, a7, a8, a9, a10]; } // Intercepted, e.g. on JSArray. List map([ T? a1, T? a2, T? a3, T? a4, T? a5, T? a6, T? a7, T? a8, T? a9, T? a10, ]) { return [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(); 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 }