OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 // DartOptions=--initializing-formal-access | 5 // DartOptions=--initializing-formal-access |
6 | 6 |
7 import "package:expect/expect.dart"; | 7 import "package:expect/expect.dart"; |
8 | 8 |
9 class C { | 9 class A { |
10 final int x; | 10 var x, y; |
11 final int y; | 11 // This should cause a warning because `x` is final when |
12 | 12 // accessed as an initializing formal. |
13 const C.constant(this.x) : y = x + 1; | 13 A(this.x) : y = (() { x = 3; }); |
14 | |
15 C(this.x) : y = x + 1 { | |
16 int z = x + 2; | |
17 assert(z == y + 1); | |
18 } | |
19 } | 14 } |
20 | 15 |
21 main() { | 16 main() { |
22 C c = new C(2); | 17 A a = new A(2); |
23 Expect.equals(c.x, 2); | 18 Expect.equals(a.x, 2); |
24 Expect.equals(c.y, 3); | 19 Expect.throws(() => a.y(), (e) => e is NoSuchMethodError); |
25 const C cc = const C.constant(4); | |
26 Expect.equals(cc.x, 4); | |
27 Expect.equals(cc.y, 5); | |
28 } | 20 } |
OLD | NEW |