blob: 8e6307f37ef22bea526f9d425a25fd83712c7af4 [file] [log] [blame]
// Copyright (c) 2021, 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.9
import 'package:expect/expect.dart';
dynamic global;
class Foo<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9,
T10, T11, T12, T13, T14, T15, T16, T17, T18, T19,
T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
T30, T31> {
@pragma('vm:never-inline')
Generic<T31> testForT31(dynamic arg) {
global = '''$T0 $T1 $T2 $T3 $T4 $T5 $T6 $T7 $T8 $T9
$T10 $T11 $T12 $T13 $T14 $T15 $T16 $T17 $T18 $T19
$T20 $T21 $T22 $T23 $T24 $T25 $T26 $T27 $T28 $T29
$T30 $T31''';
return arg as Generic<T31>;
}
}
@pragma('vm:never-inline')
Generic<T31> foo<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9,
T10, T11, T12, T13, T14, T15, T16, T17, T18, T19,
T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
T30, T31>(dynamic arg) {
global = '''$T0 $T1 $T2 $T3 $T4 $T5 $T6 $T7 $T8 $T9
$T10 $T11 $T12 $T13 $T14 $T15 $T16 $T17 $T18 $T19
$T20 $T21 $T22 $T23 $T24 $T25 $T26 $T27 $T28 $T29
$T30 $T31''';
return arg as Generic<T31>;
}
class Generic<T> {}
main() {
final genericString = Generic<String>();
Expect.isTrue(identical(Foo<bool, bool, bool, bool, bool, bool, bool, bool, bool, bool,
bool, bool, bool, bool, bool, bool, bool, bool, bool, bool,
bool, bool, bool, bool, bool, bool, bool, bool, bool, bool,
bool, String>().testForT31(genericString), genericString));
Expect.isTrue((global as String).endsWith('bool String'));
Expect.isTrue(identical(
foo<int, int, int, int, int, int, int, int, int, int,
int, int, int, int, int, int, int, int, int, int,
int, int, int, int, int, int, int, int, int, int,
int, String>(genericString), genericString));
Expect.isTrue((global as String).endsWith('int String'));
}