| 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 import 'dart:mirrors'; |
| 6 |
| 5 import "package:expect/expect.dart"; | 7 import "package:expect/expect.dart"; |
| 6 | 8 |
| 7 class A { | 9 class A { |
| 8 var missingSetterField; | 10 var missingSetterField; |
| 9 var missingGetterField; | 11 var missingGetterField; |
| 10 var getterInSuperClassField; | 12 var getterInSuperClassField; |
| 11 var setterInSuperClassField; | 13 var setterInSuperClassField; |
| 12 var getterSetterField; | 14 var getterSetterField; |
| 13 var missingAllField; | 15 var missingAllField; |
| 14 var indexField = new List(2); | 16 var indexField = new List(2); |
| 15 | 17 |
| 16 set setterInSuperClass(a) { setterInSuperClassField = a; } | 18 set setterInSuperClass(a) { setterInSuperClassField = a; } |
| 17 get getterInSuperClass => getterInSuperClassField; | 19 get getterInSuperClass => getterInSuperClassField; |
| 18 } | 20 } |
| 19 | 21 |
| 20 class B extends A { | 22 class B extends A { |
| 21 get missingSetter => missingSetterField; | 23 get missingSetter => missingSetterField; |
| 22 get setterInSuperClass => setterInSuperClassField; | 24 get setterInSuperClass => setterInSuperClassField; |
| 23 | 25 |
| 24 set missingGetter(a) { missingGetterField = a; } | 26 set missingGetter(a) { missingGetterField = a; } |
| 25 set getterInSuperClass(a) { getterInSuperClassField = a; } | 27 set getterInSuperClass(a) { getterInSuperClassField = a; } |
| 26 | 28 |
| 27 get getterSetter => getterSetterField; | 29 get getterSetter => getterSetterField; |
| 28 set getterSetter(a) { getterSetterField = a; } | 30 set getterSetter(a) { getterSetterField = a; } |
| 29 | 31 |
| 30 operator[](index) => indexField[index]; | 32 operator[](index) => indexField[index]; |
| 31 operator[]=(index, value) { indexField[index] = value; } | 33 operator[]=(index, value) { indexField[index] = value; } |
| 32 | 34 |
| 33 noSuchMethod(Invocation im) { | 35 noSuchMethod(Invocation im) { |
| 34 if (im.memberName.startsWith('missingSetter')) { | 36 String name = MirrorSystem.getName(im.memberName); |
| 37 if (name.startsWith('missingSetter')) { |
| 35 Expect.isTrue(im.isSetter); | 38 Expect.isTrue(im.isSetter); |
| 36 missingSetterField = im.positionalArguments[0]; | 39 missingSetterField = im.positionalArguments[0]; |
| 37 } else if (im.memberName.startsWith('missingGetter')) { | 40 } else if (name.startsWith('missingGetter')) { |
| 38 Expect.isTrue(im.isGetter); | 41 Expect.isTrue(im.isGetter); |
| 39 return missingGetterField; | 42 return missingGetterField; |
| 40 } else if (im.memberName.startsWith('missingAll') && im.isGetter) { | 43 } else if (name.startsWith('missingAll') && im.isGetter) { |
| 41 return missingAllField; | 44 return missingAllField; |
| 42 } else if (im.memberName.startsWith('missingAll') && im.isSetter) { | 45 } else if (name.startsWith('missingAll') && im.isSetter) { |
| 43 missingAllField = im.positionalArguments[0]; | 46 missingAllField = im.positionalArguments[0]; |
| 44 } else { | 47 } else { |
| 45 Expect.fail('Should not reach here'); | 48 Expect.fail('Should not reach here'); |
| 46 } | 49 } |
| 47 } | 50 } |
| 48 } | 51 } |
| 49 | 52 |
| 50 class C extends B { | 53 class C extends B { |
| 51 test() { | 54 test() { |
| 52 Expect.equals(42, super.missingSetter = 42); | 55 Expect.equals(42, super.missingSetter = 42); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 96 Expect.equals(3, super[0] += 1); | 99 Expect.equals(3, super[0] += 1); |
| 97 Expect.equals(3, super[0]); | 100 Expect.equals(3, super[0]); |
| 98 Expect.equals(3, super[0]++); | 101 Expect.equals(3, super[0]++); |
| 99 Expect.equals(4, super[0]); | 102 Expect.equals(4, super[0]); |
| 100 } | 103 } |
| 101 } | 104 } |
| 102 | 105 |
| 103 main() { | 106 main() { |
| 104 new C().test(); | 107 new C().test(); |
| 105 } | 108 } |
| OLD | NEW |