| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | |
| 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. | |
| 4 | |
| 5 class ParameterInitializerTest { | |
| 6 | |
| 7 static testMain() { | |
| 8 var obj = new Foo.untyped(1); | |
| 9 Expect.equals(1, obj.x); | |
| 10 | |
| 11 obj = new Foo.supertype(9); | |
| 12 Expect.equals(9, obj.x); | |
| 13 | |
| 14 obj = new Foo.subtype(7); | |
| 15 Expect.equals(7, obj.x); | |
| 16 | |
| 17 obj = new Foo.optional(x: 111); | |
| 18 Expect.equals(111, obj.x); | |
| 19 | |
| 20 obj = new Foo.optional(); | |
| 21 Expect.equals(5, obj.x); | |
| 22 | |
| 23 obj = new Foo.optional_private(_y: 222); | |
| 24 Expect.equals(222, obj._y); | |
| 25 | |
| 26 obj = new Foo.optional_private(); | |
| 27 Expect.equals(77, obj._y); | |
| 28 | |
| 29 obj = new Foo(1); | |
| 30 Expect.equals(2, obj.x); | |
| 31 | |
| 32 obj = new SubFoo(42); | |
| 33 Expect.equals(1, obj.x); | |
| 34 | |
| 35 obj = new SubSubFoo(42); | |
| 36 Expect.equals(1, obj.x); | |
| 37 } | |
| 38 } | |
| 39 | |
| 40 class Foo { | |
| 41 Foo(num this.x) { | |
| 42 // Reference to x must resolve to the field. | |
| 43 x++; | |
| 44 Expect.equals(this.x, x); | |
| 45 } | |
| 46 | |
| 47 Foo.untyped(this.x) {} | |
| 48 Foo.supertype(Object this.x) {} | |
| 49 Foo.subtype(int this.x) {} | |
| 50 Foo.optional([this.x = 5]) {} | |
| 51 Foo.optional_private([this._y = 77]) {} | |
| 52 | |
| 53 num x; | |
| 54 num _y; | |
| 55 } | |
| 56 | |
| 57 class SubFoo extends Foo { | |
| 58 SubFoo(num y) : super(y), x_ = 0 { | |
| 59 // Subfoo.setter of x has been invoked in the Foo constructor. | |
| 60 Expect.equals(x, 1); | |
| 61 Expect.equals(x_, 1); | |
| 62 | |
| 63 // The super.x will resolved to the field in Foo. | |
| 64 Expect.equals(super.x, y); | |
| 65 } | |
| 66 | |
| 67 get x() { | |
| 68 return x_; | |
| 69 } | |
| 70 | |
| 71 set x(num val) { | |
| 72 x_ = val; | |
| 73 } | |
| 74 | |
| 75 num x_; | |
| 76 } | |
| 77 | |
| 78 class SubSubFoo extends SubFoo { | |
| 79 SubSubFoo(num y) : super(y) { | |
| 80 // Subfoo.setter of x has been invoked in the Foo constructor. | |
| 81 Expect.equals(x, 1); | |
| 82 Expect.equals(x_, 1); | |
| 83 | |
| 84 // There is no way to get to the field in Foo. | |
| 85 Expect.equals(super.x, 1); | |
| 86 } | |
| 87 } | |
| 88 | |
| 89 main() { | |
| 90 ParameterInitializerTest.testMain(); | |
| 91 } | |
| OLD | NEW |