Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(213)

Side by Side Diff: tests/language/const_syntax_test.dart

Issue 10855174: Lazy implementation of final variables. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: rebase wrt CL 10832351. Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 main() { 5 main() {
6 final f0 = 42; 6 const f1; /// 01: compile-time error
7 final f1; /// 01: compile-time error 7 const int f3; /// 02: compile-time error
8 final int f2 = 87; 8
9 final int f3; /// 02: compile-time error 9 const f0 = 42;
10 const int f2 = 87;
10 Expect.equals(42, f0); 11 Expect.equals(42, f0);
11 Expect.equals(87, f2); 12 Expect.equals(87, f2);
12 13
14 // It is ok not to raise a compile-time error for 03 and 04.
13 Expect.equals(42, F0); /// 03: compile-time error 15 Expect.equals(42, F0); /// 03: compile-time error
14 Expect.equals(87, F2); /// 04: compile-time error 16 Expect.equals(87, F2); /// 04: compile-time error
15 17
16 Expect.isTrue(P0 is Point); 18 Expect.isTrue(P0 is Point);
17 Expect.isTrue(P1 is int); /// 05: compile-time error 19 Expect.isTrue(P1 is int); /// 05: compile-time error
18 Expect.isTrue(P2 is Point); /// 06: compile-time error 20 Expect.isTrue(P2 is Point); /// 06: compile-time error
19 Expect.isTrue(P3 is int); /// 07: compile-time error 21 Expect.isTrue(P3 is int); /// 07: compile-time error
20 22
21 Expect.isTrue(A0 is int); 23 Expect.isTrue(A0 is int);
22 Expect.isTrue(A1 is int); 24 Expect.isTrue(A1 is int);
23 Expect.isTrue(A2 is int); /// 08: compile-time error 25 Expect.isTrue(A2 is int); /// 08: compile-time error
24 Expect.isTrue(A3 is int); /// 08: continued 26 Expect.isTrue(A3 is int); /// 08: continued
25 27
26 Expect.isTrue(C0.X is C1); 28 Expect.isTrue(C0.X is C1);
27 Expect.isTrue(C0.X.x is C1); /// 09: compile-time error 29 Expect.isTrue(C0.X.x is C1); /// 09: compile-time error
28 30
29 Expect.equals("Hello 42", B2); 31 Expect.equals("Hello 42", B2);
30 Expect.equals("42Hello", B3); /// 10: compile-time error 32 Expect.equals("42Hello", B3); /// 10: compile-time error
31 } 33 }
32 34
33 final F0 = 42; 35 const F0 = 42;
34 final F1; /// 03: continued 36 const F1; /// 03: continued
35 final int F2 = 87; 37 const int F2 = 87;
36 final int F3; /// 04: continued 38 const int F3; /// 04: continued
37 39
38 class Point { 40 class Point {
39 final x, y; 41 final x, y;
40 const Point(this.x, this.y); 42 const Point(this.x, this.y);
41 operator +(int other) => x; 43 operator +(int other) => x;
42 } 44 }
43 45
44 // Check that compile time expressions can include invocations of 46 // Check that compile time expressions can include invocations of
45 // user-defined const constructors. 47 // user-defined const constructors.
46 final P0 = const Point(0, 0); 48 const P0 = const Point(0, 0);
47 final P1 = const Point(0, 0) + 1; /// 05: continued 49 const P1 = const Point(0, 0) + 1; /// 05: continued
48 final P2 = new Point(0, 0); /// 06: continued 50 const P2 = new Point(0, 0); /// 06: continued
49 final P3 = new Point(0, 0) + 1; /// 07: continued 51 const P3 = new Point(0, 0) + 1; /// 07: continued
50 52
51 // Check that we cannot have cyclic references in compile time 53 // Check that we cannot have cyclic references in compile time
52 // expressions. 54 // expressions.
53 final A0 = 42; 55 const A0 = 42;
54 final A1 = A0 + 1; 56 const A1 = A0 + 1;
55 final A2 = A3 + 1; /// 08: continued 57 const A2 = A3 + 1; /// 08: continued
56 final A3 = A2 + 1; /// 08: continued 58 const A3 = A2 + 1; /// 08: continued
57 59
58 class C0 { 60 class C0 {
59 static final X = const C1(); 61 static const X = const C1();
60 } 62 }
61 63
62 class C1 { 64 class C1 {
63 const C1() 65 const C1()
64 : x = C0.X /// 09: continued 66 : x = C0.X /// 09: continued
65 ; 67 ;
66 final x = null; 68 const x = null;
67 } 69 }
68 70
69 // Check that sub-expressions of binary + are numeric. 71 // Check that sub-expressions of binary + are numeric.
70 final B0 = 42; 72 const B0 = 42;
71 final B1 = "Hello"; 73 const B1 = "Hello";
72 final B2 = "$B1 $B0"; 74 const B2 = "$B1 $B0";
73 final B3 = B0 + B1; /// 10: continued 75 const B3 = B0 + B1; /// 10: continued
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698