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

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: Fix tests. 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
10 // TODO(floitsch): reenable the following lines when dart2js supports local
11 // const variables.
12 /*
13 const f0 = 42;
14 const int f2 = 87;
10 Expect.equals(42, f0); 15 Expect.equals(42, f0);
11 Expect.equals(87, f2); 16 Expect.equals(87, f2);
17 */
12 18
19 // It is ok not to raise a compile-time error for 03 and 04.
13 Expect.equals(42, F0); /// 03: compile-time error 20 Expect.equals(42, F0); /// 03: compile-time error
14 Expect.equals(87, F2); /// 04: compile-time error 21 Expect.equals(87, F2); /// 04: compile-time error
15 22
16 Expect.isTrue(P0 is Point); 23 Expect.isTrue(P0 is Point);
17 Expect.isTrue(P1 is int); /// 05: compile-time error 24 Expect.isTrue(P1 is int); /// 05: compile-time error
18 Expect.isTrue(P2 is Point); /// 06: compile-time error 25 Expect.isTrue(P2 is Point); /// 06: compile-time error
19 Expect.isTrue(P3 is int); /// 07: compile-time error 26 Expect.isTrue(P3 is int); /// 07: compile-time error
20 27
21 Expect.isTrue(A0 is int); 28 Expect.isTrue(A0 is int);
22 Expect.isTrue(A1 is int); 29 Expect.isTrue(A1 is int);
23 Expect.isTrue(A2 is int); /// 08: compile-time error 30 Expect.isTrue(A2 is int); /// 08: compile-time error
24 Expect.isTrue(A3 is int); /// 08: continued 31 Expect.isTrue(A3 is int); /// 08: continued
25 32
26 Expect.isTrue(C0.X is C1); 33 Expect.isTrue(C0.X is C1);
27 Expect.isTrue(C0.X.x is C1); /// 09: compile-time error 34 Expect.isTrue(C0.X.x is C1); /// 09: compile-time error
28 35
29 Expect.equals("Hello 42", B2); 36 Expect.equals("Hello 42", B2);
30 Expect.equals("42Hello", B3); /// 10: compile-time error 37 Expect.equals("42Hello", B3); /// 10: compile-time error
31 } 38 }
32 39
33 final F0 = 42; 40 const F0 = 42;
34 final F1; /// 03: continued 41 const F1; /// 03: continued
35 final int F2 = 87; 42 const int F2 = 87;
36 final int F3; /// 04: continued 43 const int F3; /// 04: continued
37 44
38 class Point { 45 class Point {
39 final x, y; 46 final x, y;
40 const Point(this.x, this.y); 47 const Point(this.x, this.y);
41 operator +(int other) => x; 48 operator +(int other) => x;
42 } 49 }
43 50
44 // Check that compile time expressions can include invocations of 51 // Check that compile time expressions can include invocations of
45 // user-defined const constructors. 52 // user-defined const constructors.
46 final P0 = const Point(0, 0); 53 const P0 = const Point(0, 0);
47 final P1 = const Point(0, 0) + 1; /// 05: continued 54 const P1 = const Point(0, 0) + 1; /// 05: continued
48 final P2 = new Point(0, 0); /// 06: continued 55 const P2 = new Point(0, 0); /// 06: continued
49 final P3 = new Point(0, 0) + 1; /// 07: continued 56 const P3 = new Point(0, 0) + 1; /// 07: continued
50 57
51 // Check that we cannot have cyclic references in compile time 58 // Check that we cannot have cyclic references in compile time
52 // expressions. 59 // expressions.
53 final A0 = 42; 60 const A0 = 42;
54 final A1 = A0 + 1; 61 const A1 = A0 + 1;
55 final A2 = A3 + 1; /// 08: continued 62 const A2 = A3 + 1; /// 08: continued
56 final A3 = A2 + 1; /// 08: continued 63 const A3 = A2 + 1; /// 08: continued
57 64
58 class C0 { 65 class C0 {
59 static final X = const C1(); 66 static const X = const C1();
60 } 67 }
61 68
62 class C1 { 69 class C1 {
63 const C1() 70 const C1()
64 : x = C0.X /// 09: continued 71 : x = C0.X /// 09: continued
65 ; 72 ;
66 final x = null; 73 const x = null;
67 } 74 }
68 75
69 // Check that sub-expressions of binary + are numeric. 76 // Check that sub-expressions of binary + are numeric.
70 final B0 = 42; 77 const B0 = 42;
71 final B1 = "Hello"; 78 const B1 = "Hello";
72 final B2 = "$B1 $B0"; 79 const B2 = "$B1 $B0";
73 final B3 = B0 + B1; /// 10: continued 80 const B3 = B0 + B1; /// 10: continued
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698