| // Copyright (c) 2011, 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 test for generic types. |
| |
| // @dart = 2.9 |
| |
| import "package:expect/expect.dart"; |
| |
| abstract class GenericsTest<T, V> implements Map<int, int> { |
| static int myFunc(bool a, bool b) { |
| Expect.equals(true, a); |
| Expect.equals(false, b); |
| return 42; |
| } |
| |
| static void testMain() { |
| int a = 1; |
| int b = 2; |
| int c = 3; |
| int d = 4; |
| Expect.equals(true, a < b); |
| Expect.equals(42, myFunc(a < b, c > d)); |
| Map<int, int> e; |
| GenericsTest<int, GenericsTest<int, int>> f; |
| |
| e = new Map(); |
| takesMapMethod(e); |
| Expect.equals(2, e[0]); |
| Map h = new Map<int, int>(); |
| } |
| |
| static void takesMapMethod(Map<int, int> m) { |
| m[0] = 2; |
| } |
| |
| Map<int, int> returnMap() { |
| return null; |
| } |
| } |
| |
| class LongGeneric<A, B, C> {} |
| |
| class LongerGeneric<A, B, C, D, E, F, G, H, I, J> { |
| void func() { |
| LongGeneric<String, A, LongGeneric<C, List<E>, Map<G, Map<I, J>>>> id; |
| |
| LongGeneric<num, Map<int, int>, |
| LongGeneric<C, List<E>, Map<G, LongGeneric<I, J, List<A>>>>> id2; |
| } |
| } |
| |
| main() { |
| GenericsTest.testMain(); |
| } |