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 mixin_members_test; | 5 library mixin_members_test; |
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 |
(...skipping 13 matching lines...) Expand all Loading... |
24 bar2() {} | 24 bar2() {} |
25 } | 25 } |
26 | 26 |
27 class M2 { | 27 class M2 { |
28 baz1() {} | 28 baz1() {} |
29 baz2() {} | 29 baz2() {} |
30 } | 30 } |
31 | 31 |
32 class C extends S with M1, M2 {} | 32 class C extends S with M1, M2 {} |
33 | 33 |
| 34 membersOf(ClassMirror cm) { |
| 35 var result = new Map(); |
| 36 cm.declarations.forEach((k,v) { |
| 37 if(v is MethodMirror && !v.isConstructor) result[k] = v; |
| 38 if(v is VariableMirror) result[k] = v; |
| 39 }); |
| 40 return result; |
| 41 } |
| 42 |
34 main() { | 43 main() { |
35 ClassMirror cm = reflectClass(C); | 44 ClassMirror cm = reflectClass(C); |
36 ClassMirror sM1M2 = cm.superclass; | 45 ClassMirror sM1M2 = cm.superclass; |
37 ClassMirror sM1 = sM1M2.superclass; | 46 ClassMirror sM1 = sM1M2.superclass; |
38 ClassMirror s = sM1.superclass; | 47 ClassMirror s = sM1.superclass; |
39 expect('{}', cm.members); | 48 expect('{}', membersOf(cm)); |
40 expect('[s(baz1), s(baz2)]', | 49 expect('[s(baz1), s(baz2)]', |
41 // TODO(ahe): Shouldn't have to sort. | 50 // TODO(ahe): Shouldn't have to sort. |
42 sort(sM1M2.members.keys), | 51 sort(membersOf(sM1M2).keys), |
43 '(S with M1, M2).members'); | 52 '(S with M1, M2).members'); |
44 expect('[s(M2)]', simpleNames(sM1M2.superinterfaces), | 53 expect('[s(M2)]', simpleNames(sM1M2.superinterfaces), |
45 '(S with M1, M2).superinterfaces'); | 54 '(S with M1, M2).superinterfaces'); |
46 expect('[s(bar1), s(bar2)]', | 55 expect('[s(bar1), s(bar2)]', |
47 // TODO(ahe): Shouldn't have to sort. | 56 // TODO(ahe): Shouldn't have to sort. |
48 sort(sM1.members.keys), '(S with M1).members'); | 57 sort(membersOf(sM1).keys), '(S with M1).members'); |
49 expect('[s(M1)]', simpleNames(sM1.superinterfaces), | 58 expect('[s(M1)]', simpleNames(sM1.superinterfaces), |
50 '(S with M1).superinterfaces'); | 59 '(S with M1).superinterfaces'); |
51 expect('[s(foo1), s(foo2)]', | 60 expect('[s(foo1), s(foo2)]', |
52 // TODO(ahe): Shouldn't have to sort. | 61 // TODO(ahe): Shouldn't have to sort. |
53 sort(s.members.keys), 's.members'); | 62 sort(membersOf(s).keys), 's.members'); |
54 expect('[s(Fooer)]', simpleNames(s.superinterfaces), 's.superinterfaces'); | 63 expect('[s(Fooer)]', simpleNames(s.superinterfaces), 's.superinterfaces'); |
55 Expect.equals(s, reflectClass(S)); | 64 Expect.equals(s, reflectClass(S)); |
56 } | 65 } |
OLD | NEW |