This repository was archived by the owner on Feb 25, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 7 files changed +783
-38
lines changed Expand file tree Collapse file tree 7 files changed +783
-38
lines changed Original file line number Diff line number Diff line change 1+ // Copyright (c) 2020, 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+ final bool kTrue = int .parse ('1' ) == 1 ;
8+
9+ main () {
10+ // Ensure fields are not inferred to be constants and ensure we use all fields
11+ // (to avoid them being tree shaken).
12+ final useAllFields = (kTrue ? foo : foo2).toString ();
13+ for (int i = 0 ; i <= 64 ; ++ i) {
14+ Expect .isTrue (useAllFields.contains ('$i ' ));
15+ }
16+
17+ // Ensure calling dyn:get:field64 returns the right value.
18+ Expect .equals (64 , ((kTrue ? foo : Baz (10 )) as dynamic ).field64);
19+
20+ // Ensure calling get:field64 returns the right value.
21+ Expect .equals (64 , (kTrue ? foo : Bar (10 )).field64);
22+
23+ // Ensure potentially inlined, direct field load yield right value.
24+ Expect .equals (64 , (kTrue ? foo : foo2).field64);
25+ }
26+
27+ final foo = Foo (
28+ 0 ,
29+ 1 ,
30+ 2 ,
31+ 3 ,
32+ 4 ,
33+ 5 ,
34+ 6 ,
35+ 7 ,
36+ 8 ,
37+ 9 ,
38+ 10 ,
39+ 11 ,
40+ 12 ,
41+ 13 ,
42+ 14 ,
43+ 15 ,
44+ 16 ,
45+ 17 ,
46+ 18 ,
47+ 19 ,
48+ 20 ,
49+ 21 ,
50+ 22 ,
51+ 23 ,
52+ 24 ,
53+ 25 ,
54+ 26 ,
55+ 27 ,
56+ 28 ,
57+ 29 ,
58+ 30 ,
59+ 31 ,
60+ 32 ,
61+ 33 ,
62+ 34 ,
63+ 35 ,
64+ 36 ,
65+ 37 ,
66+ 38 ,
67+ 39 ,
68+ 40 ,
69+ 41 ,
70+ 42 ,
71+ 43 ,
72+ 44 ,
73+ 45 ,
74+ 46 ,
75+ 47 ,
76+ 48 ,
77+ 49 ,
78+ 50 ,
79+ 51 ,
80+ 52 ,
81+ 53 ,
82+ 54 ,
83+ 55 ,
84+ 56 ,
85+ 57 ,
86+ 58 ,
87+ 59 ,
88+ 60 ,
89+ 61 ,
90+ 62 ,
91+ 63 ,
92+ 64 );
93+
94+ final foo2 = Foo (
95+ 2 * 0 ,
96+ 2 * 1 ,
97+ 2 * 2 ,
98+ 2 * 3 ,
99+ 2 * 4 ,
100+ 2 * 5 ,
101+ 2 * 6 ,
102+ 2 * 7 ,
103+ 2 * 8 ,
104+ 2 * 9 ,
105+ 2 * 10 ,
106+ 2 * 11 ,
107+ 2 * 12 ,
108+ 2 * 13 ,
109+ 2 * 14 ,
110+ 2 * 15 ,
111+ 2 * 16 ,
112+ 2 * 17 ,
113+ 2 * 18 ,
114+ 2 * 19 ,
115+ 2 * 20 ,
116+ 2 * 21 ,
117+ 2 * 22 ,
118+ 2 * 23 ,
119+ 2 * 24 ,
120+ 2 * 25 ,
121+ 2 * 26 ,
122+ 2 * 27 ,
123+ 2 * 28 ,
124+ 2 * 29 ,
125+ 2 * 30 ,
126+ 2 * 31 ,
127+ 2 * 32 ,
128+ 2 * 33 ,
129+ 2 * 34 ,
130+ 2 * 35 ,
131+ 2 * 36 ,
132+ 2 * 37 ,
133+ 2 * 38 ,
134+ 2 * 39 ,
135+ 2 * 40 ,
136+ 2 * 41 ,
137+ 2 * 42 ,
138+ 2 * 43 ,
139+ 2 * 44 ,
140+ 2 * 45 ,
141+ 2 * 46 ,
142+ 2 * 47 ,
143+ 2 * 48 ,
144+ 2 * 49 ,
145+ 2 * 50 ,
146+ 2 * 51 ,
147+ 2 * 52 ,
148+ 2 * 53 ,
149+ 2 * 54 ,
150+ 2 * 55 ,
151+ 2 * 56 ,
152+ 2 * 57 ,
153+ 2 * 58 ,
154+ 2 * 59 ,
155+ 2 * 60 ,
156+ 2 * 61 ,
157+ 2 * 62 ,
158+ 2 * 63 ,
159+ 2 * 64 );
160+
161+ class Bar {
162+ final int field64;
163+ Bar (this .field64);
164+ }
165+
166+ class Baz {
167+ final int field64;
168+ Baz (this .field64);
169+ }
170+
171+ class Foo implements Bar {
172+ final int field0;
173+ final int field1;
174+ final int field2;
175+ final int field3;
176+ final int field4;
177+ final int field5;
178+ final int field6;
179+ final int field7;
180+ final int field8;
181+ final int field9;
182+ final int field10;
183+ final int field11;
184+ final int field12;
185+ final int field13;
186+ final int field14;
187+ final int field15;
188+ final int field16;
189+ final int field17;
190+ final int field18;
191+ final int field19;
192+ final int field20;
193+ final int field21;
194+ final int field22;
195+ final int field23;
196+ final int field24;
197+ final int field25;
198+ final int field26;
199+ final int field27;
200+ final int field28;
201+ final int field29;
202+ final int field30;
203+ final int field31;
204+ final int field32;
205+ final int field33;
206+ final int field34;
207+ final int field35;
208+ final int field36;
209+ final int field37;
210+ final int field38;
211+ final int field39;
212+ final int field40;
213+ final int field41;
214+ final int field42;
215+ final int field43;
216+ final int field44;
217+ final int field45;
218+ final int field46;
219+ final int field47;
220+ final int field48;
221+ final int field49;
222+ final int field50;
223+ final int field51;
224+ final int field52;
225+ final int field53;
226+ final int field54;
227+ final int field55;
228+ final int field56;
229+ final int field57;
230+ final int field58;
231+ final int field59;
232+ final int field60;
233+ final int field61;
234+ final int field62;
235+ final int field63;
236+ final int field64;
237+
238+ Foo (
239+ this .field0,
240+ this .field1,
241+ this .field2,
242+ this .field3,
243+ this .field4,
244+ this .field5,
245+ this .field6,
246+ this .field7,
247+ this .field8,
248+ this .field9,
249+ this .field10,
250+ this .field11,
251+ this .field12,
252+ this .field13,
253+ this .field14,
254+ this .field15,
255+ this .field16,
256+ this .field17,
257+ this .field18,
258+ this .field19,
259+ this .field20,
260+ this .field21,
261+ this .field22,
262+ this .field23,
263+ this .field24,
264+ this .field25,
265+ this .field26,
266+ this .field27,
267+ this .field28,
268+ this .field29,
269+ this .field30,
270+ this .field31,
271+ this .field32,
272+ this .field33,
273+ this .field34,
274+ this .field35,
275+ this .field36,
276+ this .field37,
277+ this .field38,
278+ this .field39,
279+ this .field40,
280+ this .field41,
281+ this .field42,
282+ this .field43,
283+ this .field44,
284+ this .field45,
285+ this .field46,
286+ this .field47,
287+ this .field48,
288+ this .field49,
289+ this .field50,
290+ this .field51,
291+ this .field52,
292+ this .field53,
293+ this .field54,
294+ this .field55,
295+ this .field56,
296+ this .field57,
297+ this .field58,
298+ this .field59,
299+ this .field60,
300+ this .field61,
301+ this .field62,
302+ this .field63,
303+ this .field64);
304+
305+ toString () => '''
306+ $field0 ;
307+ $field1 ;
308+ $field2 ;
309+ $field3 ;
310+ $field4 ;
311+ $field5 ;
312+ $field6 ;
313+ $field7 ;
314+ $field8 ;
315+ $field9 ;
316+ $field10 ;
317+ $field11 ;
318+ $field12 ;
319+ $field13 ;
320+ $field14 ;
321+ $field15 ;
322+ $field16 ;
323+ $field17 ;
324+ $field18 ;
325+ $field19 ;
326+ $field20 ;
327+ $field21 ;
328+ $field22 ;
329+ $field23 ;
330+ $field24 ;
331+ $field25 ;
332+ $field26 ;
333+ $field27 ;
334+ $field28 ;
335+ $field29 ;
336+ $field30 ;
337+ $field31 ;
338+ $field32 ;
339+ $field33 ;
340+ $field34 ;
341+ $field35 ;
342+ $field36 ;
343+ $field37 ;
344+ $field38 ;
345+ $field39 ;
346+ $field40 ;
347+ $field41 ;
348+ $field42 ;
349+ $field43 ;
350+ $field44 ;
351+ $field45 ;
352+ $field46 ;
353+ $field47 ;
354+ $field48 ;
355+ $field49 ;
356+ $field50 ;
357+ $field51 ;
358+ $field52 ;
359+ $field53 ;
360+ $field54 ;
361+ $field55 ;
362+ $field56 ;
363+ $field57 ;
364+ $field58 ;
365+ $field59 ;
366+ $field60 ;
367+ $field61 ;
368+ $field62 ;
369+ $field63 ;
370+ $field64 ;
371+ ''' ;
372+ }
You can’t perform that action at this time.
0 commit comments