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

Side by Side Diff: tests/compiler/dart2js_extra/many_fields_test.dart

Issue 707793002: Use field names that are unique only wrt. the inheritance chain in minified mode. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Comments Created 6 years, 1 month 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 | « pkg/compiler/lib/src/js_backend/minify_namer.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 import "package:expect/expect.dart";
6
7 // A plain class that implements many fields.
8 class A {
9 var fieldA1 = 0x1;
10 var fieldA2 = 0x2;
11 var fieldA3 = 0x4;
12 var fieldA4 = 0x8;
13
14 var fieldB1 = 0x10;
15 var fieldB2 = 0x20;
16 var fieldB3 = 0x40;
17 var fieldB4 = 0x80;
18
19 var fieldC1 = 0x100;
20 var fieldC2 = 0x200;
21 var fieldC3 = 0x400;
22 var fieldC4 = 0x800;
23
24 var fieldD1 = 0x1000;
25 var fieldD2 = 0x2000;
26 var fieldD3 = 0x4000;
27 var fieldD4 = 0x8000;
28
29 var fieldXA1 = 0x1;
30 var fieldXA2 = 0x2;
31 var fieldXA3 = 0x4;
32 var fieldXA4 = 0x8;
33
34 var fieldXB1 = 0x10;
35 var fieldXB2 = 0x20;
36 var fieldXB3 = 0x40;
37 var fieldXB4 = 0x80;
38
39 var fieldXC1 = 0x1;
40 var fieldXC2 = 0x2;
41 var fieldXC3 = 0x4;
42 var fieldXC4 = 0x8;
43
44 var fieldXD1 = 0x10;
45 var fieldXD2 = 0x20;
46 var fieldXD3 = 0x40;
47 var fieldXD4 = 0x80;
48
49 var fieldYA1 = 0x1;
50 var fieldYA2 = 0x200;
51 var fieldYA3 = 0x400;
52 var fieldYA4 = 0x800;
53
54 var fieldYB1 = 0x10;
55 var fieldYB2 = 0x200;
56 var fieldYB3 = 0x400;
57 var fieldYB4 = 0x800;
58
59 var fieldYC1 = 0x100;
60 var fieldYC2 = 0x2000;
61 var fieldYC3 = 0x4000;
62 var fieldYC4 = 0x8000;
63
64 var fieldYD1 = 0x1000;
65 var fieldYD2 = 0x2000;
66 var fieldYD3 = 0x4000;
67 var fieldYD4 = 0x8000;
68 }
69
70 // Implementing the same fields using inheritance and a mixin.
71 class B {
72 var fieldA1 = 0x0011;
73 var fieldA2 = 0x0002;
74 var fieldA3 = 0x0044;
75 var fieldA4 = 0x0008;
76
77 var fieldB1 = 0x0010;
78 var fieldB2 = 0x0220;
79 var fieldB3 = 0x0040;
80 var fieldB4 = 0x0880;
81
82 var fieldC1 = 0x0101;
83 var fieldC2 = 0x0200;
84 var fieldC3 = 0x0404;
85 var fieldC4 = 0x0810;
86
87 var fieldD1 = 0x1000;
88 var fieldD2 = 0x2204;
89 var fieldD3 = 0x4040;
90 var fieldD4 = 0x8801;
91 }
92
93 class C {
94 var fieldXA1 = 0x8001;
95 var fieldXA2 = 0x4002;
96 var fieldXA3 = 0x2004;
97 var fieldXA4 = 0x1008;
98
99 var fieldXB1 = 0x810;
100 var fieldXB2 = 0x420;
101 var fieldXB3 = 0x240;
102 var fieldXB4 = 0x180;
103
104 var fieldXC1 = 0x180;
105 var fieldXC2 = 0x240;
106 var fieldXC3 = 0x420;
107 var fieldXC4 = 0x810;
108
109 var fieldXD1 = 0x1008;
110 var fieldXD2 = 0x2004;
111 var fieldXD3 = 0x4002;
112 var fieldXD4 = 0x8001;
113 }
114
115 class D extends B with C {
116 var fieldYA1 = 0x8001;
117 var fieldYA2 = 0x4002;
118 var fieldYA3 = 0x2004;
119 var fieldYA4 = 0x0008;
120
121 var fieldYB1 = 0x810;
122 var fieldYB2 = 0x420;
123 var fieldYB3 = 0x240;
124 var fieldYB4 = 0x080;
125
126 var fieldYC1 = 0x180;
127 var fieldYC2 = 0x240;
128 var fieldYC3 = 0x420;
129 var fieldYC4 = 0x800;
130
131 var fieldYD1 = 0x1008;
132 var fieldYD2 = 0x2004;
133 var fieldYD3 = 0x4002;
134 var fieldYD4 = 0x8000;
135 }
136
137 // Mix in the mixin into the full implementation, shadowing some fields.
138 class E extends A with C {
139 }
140
141 // Another mixin for block C.
142 class F {
143 var fieldYA1 = 0x0001;
144 var fieldYA2 = 0x1022;
145 var fieldYA3 = 0x0004;
146 var fieldYA4 = 0x0088;
147
148 var fieldYB1 = 0x0410;
149 var fieldYB2 = 0x0022;
150 var fieldYB3 = 0x0040;
151 var fieldYB4 = 0x0880;
152
153 var fieldYC1 = 0x1001;
154 var fieldYC2 = 0x2200;
155 var fieldYC3 = 0x4400;
156 var fieldYC4 = 0x8800;
157
158 var fieldYD1 = 0x1108;
159 var fieldYD2 = 0x2200;
160 var fieldYD3 = 0x4044;
161 var fieldYD4 = 0x8001;
162 }
163
164 // Use two mixins in a single class.
165 class G extends B with C, F {
166 }
167
168 bool checkFields(cls) {
169 var blockA =
170 cls.fieldA1 ^ cls.fieldA2 ^ cls.fieldA3 ^ cls.fieldA4 ^
171 cls.fieldB1 ^ cls.fieldB2 ^ cls.fieldB3 ^ cls.fieldB4 ^
172 cls.fieldC1 ^ cls.fieldC2 ^ cls.fieldC3 ^ cls.fieldC4 ^
173 cls.fieldD1 ^ cls.fieldD2 ^ cls.fieldD3 ^ cls.fieldD4;
174 var blockB =
175 cls.fieldXA1 ^ cls.fieldXA2 ^ cls.fieldXA3 ^ cls.fieldXA4 ^
176 cls.fieldXB1 ^ cls.fieldXB2 ^ cls.fieldXB3 ^ cls.fieldXB4 ^
177 cls.fieldXC1 ^ cls.fieldXC2 ^ cls.fieldXC3 ^ cls.fieldXC4 ^
178 cls.fieldXD1 ^ cls.fieldXD2 ^ cls.fieldXD3 ^ cls.fieldXD4;
179 var blockC =
180 cls.fieldYA1 ^ cls.fieldYA2 ^ cls.fieldYA3 ^ cls.fieldYA4 ^
181 cls.fieldYB1 ^ cls.fieldYB2 ^ cls.fieldYB3 ^ cls.fieldYB4 ^
182 cls.fieldYC1 ^ cls.fieldYC2 ^ cls.fieldYC3 ^ cls.fieldYC4 ^
183 cls.fieldYD1 ^ cls.fieldYD2 ^ cls.fieldYD3 ^ cls.fieldYD4;
184 return blockA == 0xFFFF && blockB == 0x0000 && blockC == 0x1111;
185 }
186
187 main () {
188 var instances = [new A(), new D(), new E(), new G()];
189 for (var instance in instances) {
190 Expect.isTrue(checkFields(instance));
191 }
192 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/js_backend/minify_namer.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698