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

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

Issue 10908007: Add test for final field initialization (fails on the VM). (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 3 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
« no previous file with comments | « tests/language/field_initialization_order_test.dart ('k') | tests/language/language.status » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // Test that field initializers are evaluated in the right order. 4
5 // Test that initializers for final fields are evaluated in the right
6 // order.
5 7
6 int counter = 0; 8 int counter = 0;
7 9
8 class Mark { 10 class Mark {
9 static StringBuffer buffer; 11 static StringBuffer buffer;
10 Mark(value) { 12 Mark(value) {
11 buffer.add('$value.'); 13 buffer.add('$value.');
12 } 14 }
13 } 15 }
14 16
15 class OneField { 17 class OneField {
16 var a = new Mark('a'); 18 final a = new Mark('a');
17 19
18 OneField(); 20 OneField();
19 21
20 OneField.init() : a = new Mark('ai'); 22 OneField.init() : a = new Mark('ai');
21 } 23 }
22 24
23 class TwoFields { 25 class TwoFields {
24 var b = new Mark('b'); 26 final b = new Mark('b');
25 var a = new Mark('a'); 27 final a = new Mark('a');
26 28
27 TwoFields(); 29 TwoFields();
28 30
29 TwoFields.initA() : a = new Mark('ai'); 31 TwoFields.initA() : a = new Mark('ai');
30 32
31 TwoFields.initB() : b = new Mark('bi'); 33 TwoFields.initB() : b = new Mark('bi');
32 34
33 TwoFields.initBoth() : a = new Mark('ai'), b = new Mark('bi'); 35 TwoFields.initBoth() : a = new Mark('ai'), b = new Mark('bi');
34 } 36 }
35 37
36 class InheritOneField extends OneField { 38 class InheritOneField extends OneField {
37 var b = new Mark('b'); 39 final b = new Mark('b');
38 40
39 InheritOneField() : super(); 41 InheritOneField() : super();
40 42
41 InheritOneField.init() : b = new Mark('bi'), super(); 43 InheritOneField.init() : b = new Mark('bi'), super();
42 44
43 InheritOneField.superWithInit() : super.init(); 45 InheritOneField.superWithInit() : super.init();
44 46
45 InheritOneField.initWithSuperInit() : b = new Mark('bi'), super.init(); 47 InheritOneField.initWithSuperInit() : b = new Mark('bi'), super.init();
46 48
47 InheritOneField.initWithSuperInit2() : super.init(), b = new Mark('bi'); 49 InheritOneField.initWithSuperInit2() : super.init(), b = new Mark('bi');
48 } 50 }
49 51
50 String run(callback) { 52 String run(callback) {
51 Mark.buffer = new StringBuffer(); 53 Mark.buffer = new StringBuffer();
52 callback(); 54 callback();
53 return Mark.buffer.toString(); 55 return Mark.buffer.toString();
54 } 56 }
55 57
56 main() { 58 main() {
57 Expect.equals('a.', run(() => new OneField())); 59 Expect.equals('a.', run(() => new OneField()));
58 Expect.equals('a.ai.', run(() => new OneField.init())); 60 Expect.equals('a.ai.', run(() => new OneField.init()));
59 61
60 Expect.equals('b.a.', run(() => new TwoFields())); 62 Expect.equals('b.a.', run(() => new TwoFields()));
61 Expect.equals('b.a.ai.', run(() => new TwoFields.initA())); 63 Expect.equals('b.a.ai.', run(() => new TwoFields.initA()));
62 Expect.equals('b.a.bi.', run(() => new TwoFields.initB())); 64 Expect.equals('b.a.bi.', run(() => new TwoFields.initB()));
63 Expect.equals('b.a.ai.bi.', run(() => new TwoFields.initBoth())); 65 Expect.equals('b.a.ai.bi.', run(() => new TwoFields.initBoth()));
64 66
65 Expect.equals('b.a.', run(() => new InheritOneField())); 67 Expect.equals('b.a.', run(() =>
66 Expect.equals('b.bi.a.', run(() => new InheritOneField.init())); 68 new InheritOneField()));
67 Expect.equals('b.a.ai.', run(() => new InheritOneField.superWithInit())); 69 Expect.equals('b.bi.a.', run(() =>
68 Expect.equals('b.bi.a.ai.', run(() => new InheritOneField.initWithSuperInit()) ); 70 new InheritOneField.init()));
69 Expect.equals('b.a.ai.bi.', run(() => new InheritOneField.initWithSuperInit2() )); 71 Expect.equals('b.a.ai.', run(() =>
72 new InheritOneField.superWithInit()));
73 Expect.equals('b.bi.a.ai.', run(() =>
74 new InheritOneField.initWithSuperInit()));
75 Expect.equals('b.a.ai.bi.', run(() =>
76 new InheritOneField.initWithSuperInit2()));
70 } 77 }
OLDNEW
« no previous file with comments | « tests/language/field_initialization_order_test.dart ('k') | tests/language/language.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698