OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 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 | 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 // Dart test program for redirection constructors. | 4 // Dart test program for redirection constructors. |
5 | 5 |
6 import "package:expect/expect.dart"; | 6 import "package:expect/expect.dart"; |
7 | 7 |
8 class A { | 8 class A { |
9 var x; | 9 var x; |
10 A(this.x) {} | 10 A(this.x) {} |
11 A.named(x, int y) : this(x + y); | 11 A.named(x, int y) : this(x + y); |
12 A.named2(int x, int y, z) : this.named(staticFun(x, y), z); | 12 A.named2(int x, int y, z) : this.named(staticFun(x, y), z); |
13 | 13 |
14 // The following is a bit tricky. It is a compile-time error to | 14 // The following is a bit tricky. It is a compile-time error to |
15 // refer to this (implicitly or explicitly) from an initializer. | 15 // refer to this (implicitly or explicitly) from an initializer. |
16 // When we remove the line with moreStaticFun, staticFun is really a | 16 // When we remove the line with moreStaticFun, staticFun is really a |
17 // static function and it is legal to call it. This is what will | 17 // static function and it is legal to call it. This is what will |
18 // happen in the /none version of this test. However, in /01, | 18 // happen in the /none version of this test. However, in /01, |
19 // staticFun isn't really a static function and should cause a | 19 // staticFun isn't really a static function and should cause a |
20 // compile-time error. | 20 // compile-time error. |
21 static | 21 static |
22 moreStaticFun() {} //# 01: compile-time error | 22 moreStaticFun() {} //# 01: compile-time error |
23 int staticFun(int v1, int v2) { | 23 int staticFun(int v1, int v2) { |
24 return v1 * v2; | 24 return v1 * v2; |
25 } | 25 } |
26 } | 26 } |
27 | 27 |
28 class B extends A { | 28 class B extends A { |
29 B(y) : super(y + 1) {} | 29 B(y) : super(y + 1) {} |
30 B.named(y) : super.named(y, y + 1) {} | 30 B.named(y) : super.named(y, y + 1) {} |
31 } | 31 } |
32 | 32 |
33 class C { | 33 class C { |
(...skipping 29 matching lines...) Expand all Loading... |
63 D d = const D(498); | 63 D d = const D(498); |
64 Expect.equals(499, d.x); | 64 Expect.equals(499, d.x); |
65 d = const D.named(249); | 65 d = const D.named(249); |
66 Expect.equals(499, d.x); | 66 Expect.equals(499, d.x); |
67 } | 67 } |
68 } | 68 } |
69 | 69 |
70 main() { | 70 main() { |
71 ConstructorRedirectTest.testMain(); | 71 ConstructorRedirectTest.testMain(); |
72 } | 72 } |
OLD | NEW |