| // Copyright (c) 2019, 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. |
| |
| /// @assertion A class declaration, type alias, or function [G] may be generic, |
| /// that is, [G] may have formal type parameters declared. |
| /// @description Checks various correct generic typedefs declarations. |
| /// @author iefremov |
| |
| |
| abstract class I{} |
| |
| typedef f1<T>(); |
| typedef f2<$, $$, $$$>(); |
| typedef f3<T extends f1<T>, S extends I, V extends Function>(); |
| typedef f4<T extends f3<U, S, V>, U extends f1, V extends Function, S extends I>(); |
| typedef f5<T extends f1<List<List<List<List>>>>>(); |
| |
| main() { |
| f1 foo1; |
| f2 foo2; |
| f3 foo3; |
| f4 foo4; |
| f5 foo5; |
| fManyParameters foo8; |
| } |
| |
| typedef fManyParameters< |
| 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,T32,T33,T34,T35,T36,T37,T38, |
| T39,T40,T41,T42,T43,T44,T45,T46,T47,T48,T49,T50,T51,T52,T53,T54,T55,T56, |
| T57,T58,T59,T60,T61,T62,T63,T64,T65,T66,T67,T68,T69,T70,T71,T72,T73,T74, |
| T75,T76,T77,T78,T79,T80,T81,T82,T83,T84,T85,T86,T87,T88,T89,T90,T91,T92, |
| T93,T94,T95,T96,T97,T98,T99,T100,T101>(); |