blob: cc9687519189328194688f355c7bb5190def7e13 [file] [log] [blame] [edit]
// 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
}