blob: 90f3d8122377db4dd2a013b82d810468a50e5c10 [file] [log] [blame]
// 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.7
// Test generic instantiation with many type arguments.
import 'package:expect/expect.dart';
f1<T1>(T1 t1) => '$t1';
f2<T1, T2>(T1 t1, T2 t2) => '$t1$t2';
f3<T1, T2, T3>(T1 t1, T2 t2, T3 t3) => '$t1$t2$t3';
f4<T1, T2, T3, T4>(T1 t1, T2 t2, T3 t3, T4 t4) => '$t1$t2$t3$t4';
f5<T1, T2, T3, T4, T5>(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5) => '$t1$t2$t3$t4$t5';
f6<T1, T2, T3, T4, T5, T6>(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6) =>
'$t1$t2$t3$t4$t5$t6';
f7<T1, T2, T3, T4, T5, T6, T7>(
T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7) =>
'$t1$t2$t3$t4$t5$t6$t7';
f8<T1, T2, T3, T4, T5, T6, T7, T8>(
T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8) =>
'$t1$t2$t3$t4$t5$t6$t7$t8';
f9<T1, T2, T3, T4, T5, T6, T7, T8, T9>(
T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9) =>
'$t1$t2$t3$t4$t5$t6$t7$t8$t9';
f10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5,
T6 t6, T7 t7, T8 t8, T9 t9, T10 t10) =>
'$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10';
f11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(T1 t1, T2 t2, T3 t3, T4 t4,
T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11) =>
'$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10$t11';
f12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(T1 t1, T2 t2, T3 t3,
T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10, T11 t11, T12 t12) =>
'$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10$t11$t12';
f13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(
T1 t1,
T2 t2,
T3 t3,
T4 t4,
T5 t5,
T6 t6,
T7 t7,
T8 t8,
T9 t9,
T10 t10,
T11 t11,
T12 t12,
T13 t13) =>
'$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10$t11$t12$t13';
f14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(
T1 t1,
T2 t2,
T3 t3,
T4 t4,
T5 t5,
T6 t6,
T7 t7,
T8 t8,
T9 t9,
T10 t10,
T11 t11,
T12 t12,
T13 t13,
T14 t14) =>
'$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10$t11$t12$t13$t14';
f15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(
T1 t1,
T2 t2,
T3 t3,
T4 t4,
T5 t5,
T6 t6,
T7 t7,
T8 t8,
T9 t9,
T10 t10,
T11 t11,
T12 t12,
T13 t13,
T14 t14,
T15 t15) =>
'$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10$t11$t12$t13$t14$t15';
f16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(
T1 t1,
T2 t2,
T3 t3,
T4 t4,
T5 t5,
T6 t6,
T7 t7,
T8 t8,
T9 t9,
T10 t10,
T11 t11,
T12 t12,
T13 t13,
T14 t14,
T15 t15,
T16 t16) =>
'$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10$t11$t12$t13$t14$t15$t16';
f17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>(
T1 t1,
T2 t2,
T3 t3,
T4 t4,
T5 t5,
T6 t6,
T7 t7,
T8 t8,
T9 t9,
T10 t10,
T11 t11,
T12 t12,
T13 t13,
T14 t14,
T15 t15,
T16 t16,
T17 t17) =>
'$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10$t11$t12$t13$t14$t15$t16$t17';
f18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17,
T18>(
T1 t1,
T2 t2,
T3 t3,
T4 t4,
T5 t5,
T6 t6,
T7 t7,
T8 t8,
T9 t9,
T10 t10,
T11 t11,
T12 t12,
T13 t13,
T14 t14,
T15 t15,
T16 t16,
T17 t17,
T18 t18) =>
'$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10$t11$t12$t13$t14$t15$t16$t17$t18';
f19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17,
T18, T19>(
T1 t1,
T2 t2,
T3 t3,
T4 t4,
T5 t5,
T6 t6,
T7 t7,
T8 t8,
T9 t9,
T10 t10,
T11 t11,
T12 t12,
T13 t13,
T14 t14,
T15 t15,
T16 t16,
T17 t17,
T18 t18,
T19 t19) =>
'$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10$t11$t12$t13$t14$t15$t16$t17$t18$t19';
f20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17,
T18, T19, T20>(
T1 t1,
T2 t2,
T3 t3,
T4 t4,
T5 t5,
T6 t6,
T7 t7,
T8 t8,
T9 t9,
T10 t10,
T11 t11,
T12 t12,
T13 t13,
T14 t14,
T15 t15,
T16 t16,
T17 t17,
T18 t18,
T19 t19,
T20 t20) =>
'$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10$t11$t12$t13$t14$t15$t16$t17$t18$t19$t20';
f21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17,
T18, T19, T20, T21>(
T1 t1,
T2 t2,
T3 t3,
T4 t4,
T5 t5,
T6 t6,
T7 t7,
T8 t8,
T9 t9,
T10 t10,
T11 t11,
T12 t12,
T13 t13,
T14 t14,
T15 t15,
T16 t16,
T17 t17,
T18 t18,
T19 t19,
T20 t20,
T21 t21) =>
'$t1$t2$t3$t4$t5$t6$t7$t8$t9$t10$t11$t12$t13$t14$t15$t16$t17$t18$t19$t20$t21';
m1(Function(int) f) => f(1);
m2(Function(int, int) f) => f(1, 2);
m3(Function(int, int, int) f) => f(1, 2, 3);
m4(Function(int, int, int, int) f) => f(1, 2, 3, 4);
m5(Function(int, int, int, int, int) f) => f(1, 2, 3, 4, 5);
m6(Function(int, int, int, int, int, int) f) => f(1, 2, 3, 4, 5, 6);
m7(Function(int, int, int, int, int, int, int) f) => f(1, 2, 3, 4, 5, 6, 7);
m8(Function(int, int, int, int, int, int, int, int) f) =>
f(1, 2, 3, 4, 5, 6, 7, 8);
m9(Function(int, int, int, int, int, int, int, int, int) f) =>
f(1, 2, 3, 4, 5, 6, 7, 8, 9);
m10(Function(int, int, int, int, int, int, int, int, int, int) f) =>
f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
m11(Function(int, int, int, int, int, int, int, int, int, int, int) f) =>
f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
m12(Function(int, int, int, int, int, int, int, int, int, int, int, int) f) =>
f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
m13(
Function(
int, int, int, int, int, int, int, int, int, int, int, int, int)
f) =>
f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13);
m14(
Function(int, int, int, int, int, int, int, int, int, int, int, int,
int, int)
f) =>
f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14);
m15(
Function(int, int, int, int, int, int, int, int, int, int, int, int,
int, int, int)
f) =>
f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
m16(
Function(int, int, int, int, int, int, int, int, int, int, int, int,
int, int, int, int)
f) =>
f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16);
m17(
Function(int, int, int, int, int, int, int, int, int, int, int, int,
int, int, int, int, int)
f) =>
f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17);
m18(
Function(int, int, int, int, int, int, int, int, int, int, int, int,
int, int, int, int, int, int)
f) =>
f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18);
m19(
Function(int, int, int, int, int, int, int, int, int, int, int, int,
int, int, int, int, int, int, int)
f) =>
f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19);
m20(
Function(int, int, int, int, int, int, int, int, int, int, int, int,
int, int, int, int, int, int, int, int)
f) =>
f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20);
m21(
Function(int, int, int, int, int, int, int, int, int, int, int, int,
int, int, int, int, int, int, int, int, int)
f) =>
f(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21);
main() {
Expect.equals('1', m1(f1));
Expect.equals('12', m2(f2));
Expect.equals('123', m3(f3));
Expect.equals('1234', m4(f4));
Expect.equals('12345', m5(f5));
Expect.equals('123456', m6(f6));
Expect.equals('1234567', m7(f7));
Expect.equals('12345678', m8(f8));
Expect.equals('123456789', m9(f9));
Expect.equals('12345678910', m10(f10));
Expect.equals('1234567891011', m11(f11));
Expect.equals('123456789101112', m12(f12));
Expect.equals('12345678910111213', m13(f13));
Expect.equals('1234567891011121314', m14(f14));
Expect.equals('123456789101112131415', m15(f15));
Expect.equals('12345678910111213141516', m16(f16));
Expect.equals('1234567891011121314151617', m17(f17));
Expect.equals('123456789101112131415161718', m18(f18));
Expect.equals('12345678910111213141516171819', m19(f19));
Expect.equals('1234567891011121314151617181920', m20(f20));
Expect.equals('123456789101112131415161718192021', m21(f21)); //# 01: ok
}