OLD | NEW |
---|---|
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library test.generic_bounded; | 5 library test.generic_bounded; |
6 | 6 |
7 import 'dart:mirrors'; | 7 import 'dart:mirrors'; |
8 | 8 |
9 import 'package:expect/expect.dart'; | 9 import 'package:expect/expect.dart'; |
10 | 10 |
11 import 'generics_test.dart'; | 11 import 'generics_helper.dart'; |
12 | 12 |
13 class Interface<T> {} | 13 class Interface<T> {} |
14 class Bounded<S extends num> {} | 14 class Bounded<S extends num> {} |
15 | 15 |
16 class Fixed implements Interface<int> {} | 16 class Fixed implements Interface<int> {} |
17 class Generic<R> implements Interface<R> {} | 17 class Generic<R> implements Interface<R> {} |
18 | 18 |
19 class Bienbounded implements Bounded<int> {} | 19 class Bienbounded implements Bounded<int> {} |
regis
2013/10/28 21:06:39
Bienbounded? :-)
| |
20 class Malbounded implements Bounded<String> {} | 20 class Malbounded implements Bounded<String> {} /// static type warning |
21 class FBounded implements Interface<FBounded> {} | 21 class FBounded implements Interface<FBounded> {} |
22 | 22 |
23 class Mixin {} | 23 class Mixin {} |
24 class FixedMixinApplication = Object with Mixin implements Interface<int>; | 24 class FixedMixinApplication = Object with Mixin implements Interface<int>; |
25 class GenericMixinApplication<X> = Object with Mixin implements Interface<X>; | 25 class GenericMixinApplication<X> = Object with Mixin implements Interface<X>; |
26 class FixedClass extends Object with Mixin implements Interface<int> {} | 26 class FixedClass extends Object with Mixin implements Interface<int> {} |
27 class GenericClass<Y> extends Object with Mixin implements Interface<Y> {} | 27 class GenericClass<Y> extends Object with Mixin implements Interface<Y> {} |
28 | 28 |
29 main() { | 29 main() { |
30 TypeMirror dynamicMirror = currentMirrorSystem().dynamicType; | 30 TypeMirror dynamicMirror = currentMirrorSystem().dynamicType; |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
90 typeParameters(interfaceOfX, [#T]); | 90 typeParameters(interfaceOfX, [#T]); |
91 typeParameters(interfaceOfDouble, [#T]); | 91 typeParameters(interfaceOfDouble, [#T]); |
92 typeParameters(interfaceOfInt3, [#T]); | 92 typeParameters(interfaceOfInt3, [#T]); |
93 typeParameters(interfaceOfY, [#T]); | 93 typeParameters(interfaceOfY, [#T]); |
94 typeParameters(interfaceOfDouble2, [#T]); | 94 typeParameters(interfaceOfDouble2, [#T]); |
95 | 95 |
96 typeArguments(interfaceDecl, []); | 96 typeArguments(interfaceDecl, []); |
97 typeArguments(boundedDecl, []); | 97 typeArguments(boundedDecl, []); |
98 typeArguments(interfaceOfInt, [reflectClass(int)]); | 98 typeArguments(interfaceOfInt, [reflectClass(int)]); |
99 typeArguments(interfaceOfR, [rFromGeneric]); | 99 typeArguments(interfaceOfR, [rFromGeneric]); |
100 typeArguments(interfaceOfBool, [reflectClass(bool)]); /// 01: ok | 100 typeArguments(interfaceOfBool, [reflectClass(bool)]); |
101 typeArguments(boundedOfInt, [reflectClass(int)]); | 101 typeArguments(boundedOfInt, [reflectClass(int)]); |
102 typeArguments(boundedOfString, [reflectClass(String)]); | 102 typeArguments(boundedOfString, [reflectClass(String)]); |
103 typeArguments(interfaceOfFBounded, [reflectClass(FBounded)]); | 103 typeArguments(interfaceOfFBounded, [reflectClass(FBounded)]); |
104 typeArguments(interfaceOfInt2, [reflectClass(int)]); | 104 typeArguments(interfaceOfInt2, [reflectClass(int)]); |
105 typeArguments(interfaceOfX, [xFromGenericMixinApplication]); | 105 typeArguments(interfaceOfX, [xFromGenericMixinApplication]); |
106 typeArguments(interfaceOfDouble, [reflectClass(double)]); /// 01: ok | 106 typeArguments(interfaceOfDouble, [reflectClass(double)]); |
107 typeArguments(interfaceOfInt3, [reflectClass(int)]); | 107 typeArguments(interfaceOfInt3, [reflectClass(int)]); |
108 typeArguments(interfaceOfY, [yFromGenericClass]); | 108 typeArguments(interfaceOfY, [yFromGenericClass]); |
109 typeArguments(interfaceOfDouble2, [reflectClass(double)]); /// 01: ok | 109 typeArguments(interfaceOfDouble2, [reflectClass(double)]); |
110 } | 110 } |
OLD | NEW |