| // Copyright (c) 2017, 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. |
| |
| library object_fields_test; |
| |
| /// Simple program creating an object and accessing its initialized fields. |
| void main() { |
| var a = new A(); |
| print(a.f1); |
| print(a.f2); |
| |
| new B(0); |
| new B.redirecting1(0); |
| new B.redirecting2(0); |
| |
| var c = new C.redirecting1(0); |
| print(c.f1); |
| print(c.f2); |
| } |
| |
| class A { |
| int f1 = 37; |
| String f2 = 'hello world'; |
| } |
| |
| class B { |
| B(int i); |
| B.redirecting1(int i) : this(redirecting(i, 'B.redirecting1')); |
| B.redirecting2(int i) : this.redirecting1(redirecting(i, 'B.redirecting2')); |
| } |
| |
| class C { |
| int f1 = fieldInitializer(0, 'C.f1'); |
| int f2 = fieldInitializer(1, 'C.f2'); |
| |
| C(int i); |
| C.redirecting1(int i) : this(redirecting(i, 'C.redirecting1')); |
| } |
| |
| int redirecting(int i, String s) { |
| print('$s: $i'); |
| return i + 1; |
| } |
| |
| int fieldInitializer(int f, String s) { |
| print('$s: $f'); |
| return f; |
| } |