Skip to content

Commit 81b669d

Browse files
johnniwintherCommit Queue
authored andcommitted
[cfe] Create enum elements through SourcePropertyBuilder
TEST=existing Change-Id: I94ffff0ca5d891b43e0bc7b64d78eb0c03e3dd12 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/404103 Reviewed-by: Alexander Markov <[email protected]> Commit-Queue: Johnni Winther <[email protected]> Reviewed-by: Chloe Stefantsova <[email protected]>
1 parent d0b90e5 commit 81b669d

File tree

432 files changed

+3187
-2135
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

432 files changed

+3187
-2135
lines changed

pkg/dart2bytecode/testcases/literals.dart.expect

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,7 @@ ConstantPool {
465465
Class 'A', script = 'DART_SDK/pkg/dart2bytecode/testcases/literals.dart', enum
466466
extends dart:core::_Enum
467467

468-
Field 'values', type = dart:core::List < DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A >, getter = 'get:values', reflectable, static, const, final, is-late, has-initializer
468+
Field 'elem1', type = DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A, getter = 'get:elem1', reflectable, static, const, final, is-late, has-initializer
469469
initializer
470470
Bytecode {
471471
Entry 0
@@ -474,11 +474,11 @@ Bytecode {
474474
ReturnTOS
475475
}
476476
ConstantPool {
477-
[0] = ObjectRef const List<DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A> [const DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A {dart:core::_Enum::index (field): const 0, dart:core::_Enum::_name (field): 'elem1'}, const DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A {dart:core::_Enum::index (field): const 1, dart:core::_Enum::_name (field): 'elem2'}, const DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A {dart:core::_Enum::index (field): const 2, dart:core::_Enum::_name (field): 'elem3'}, const DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A {dart:core::_Enum::index (field): const 3, dart:core::_Enum::_name (field): 'elem4'}]
477+
[0] = ObjectRef const DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A {dart:core::_Enum::index (field): const 0, dart:core::_Enum::_name (field): 'elem1'}
478478
}
479479

480480

481-
Field 'elem1', type = DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A, getter = 'get:elem1', reflectable, static, const, final, is-late, has-initializer
481+
Field 'elem2', type = DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A, getter = 'get:elem2', reflectable, static, const, final, is-late, has-initializer
482482
initializer
483483
Bytecode {
484484
Entry 0
@@ -487,11 +487,11 @@ Bytecode {
487487
ReturnTOS
488488
}
489489
ConstantPool {
490-
[0] = ObjectRef const DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A {dart:core::_Enum::index (field): const 0, dart:core::_Enum::_name (field): 'elem1'}
490+
[0] = ObjectRef const DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A {dart:core::_Enum::index (field): const 1, dart:core::_Enum::_name (field): 'elem2'}
491491
}
492492

493493

494-
Field 'elem2', type = DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A, getter = 'get:elem2', reflectable, static, const, final, is-late, has-initializer
494+
Field 'elem3', type = DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A, getter = 'get:elem3', reflectable, static, const, final, is-late, has-initializer
495495
initializer
496496
Bytecode {
497497
Entry 0
@@ -500,11 +500,11 @@ Bytecode {
500500
ReturnTOS
501501
}
502502
ConstantPool {
503-
[0] = ObjectRef const DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A {dart:core::_Enum::index (field): const 1, dart:core::_Enum::_name (field): 'elem2'}
503+
[0] = ObjectRef const DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A {dart:core::_Enum::index (field): const 2, dart:core::_Enum::_name (field): 'elem3'}
504504
}
505505

506506

507-
Field 'elem3', type = DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A, getter = 'get:elem3', reflectable, static, const, final, is-late, has-initializer
507+
Field 'elem4', type = DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A, getter = 'get:elem4', reflectable, static, const, final, is-late, has-initializer
508508
initializer
509509
Bytecode {
510510
Entry 0
@@ -513,11 +513,11 @@ Bytecode {
513513
ReturnTOS
514514
}
515515
ConstantPool {
516-
[0] = ObjectRef const DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A {dart:core::_Enum::index (field): const 2, dart:core::_Enum::_name (field): 'elem3'}
516+
[0] = ObjectRef const DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A {dart:core::_Enum::index (field): const 3, dart:core::_Enum::_name (field): 'elem4'}
517517
}
518518

519519

520-
Field 'elem4', type = DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A, getter = 'get:elem4', reflectable, static, const, final, is-late, has-initializer
520+
Field 'values', type = dart:core::List < DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A >, getter = 'get:values', reflectable, static, const, final, is-late, has-initializer
521521
initializer
522522
Bytecode {
523523
Entry 0
@@ -526,7 +526,7 @@ Bytecode {
526526
ReturnTOS
527527
}
528528
ConstantPool {
529-
[0] = ObjectRef const DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A {dart:core::_Enum::index (field): const 3, dart:core::_Enum::_name (field): 'elem4'}
529+
[0] = ObjectRef const List<DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A> [const DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A {dart:core::_Enum::index (field): const 0, dart:core::_Enum::_name (field): 'elem1'}, const DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A {dart:core::_Enum::index (field): const 1, dart:core::_Enum::_name (field): 'elem2'}, const DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A {dart:core::_Enum::index (field): const 2, dart:core::_Enum::_name (field): 'elem3'}, const DART_SDK/pkg/dart2bytecode/testcases/literals.dart::A {dart:core::_Enum::index (field): const 3, dart:core::_Enum::_name (field): 'elem4'}]
530530
}
531531

532532

pkg/front_end/lib/src/base/scope.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -695,6 +695,10 @@ mixin ErroneousMemberBuilderMixin implements SourceMemberBuilder {
695695
// Coverage-ignore(suite): Not run.
696696
bool get isSynthesized => false;
697697

698+
@override
699+
// Coverage-ignore(suite): Not run.
700+
bool get isEnumElement => false;
701+
698702
@override
699703
bool get isConflictingSetter => false;
700704

pkg/front_end/lib/src/builder/member_builder.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,9 @@ abstract class MemberBuilder implements Builder {
9393

9494
bool get isAbstract;
9595

96+
/// Returns `true` if this member is declared by an enum element.
97+
bool get isEnumElement;
98+
9699
/// Returns `true` if this member is a setter that conflicts with the implicit
97100
/// setter of a field.
98101
bool get isConflictingSetter;

pkg/front_end/lib/src/dill/dill_extension_member_builder.dart

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ class DillExtensionFieldBuilder extends DillExtensionMemberBuilder {
8282
// Coverage-ignore(suite): Not run.
8383
bool get isProperty => true;
8484

85+
@override
86+
// Coverage-ignore(suite): Not run.
87+
bool get isEnumElement => field.isEnumElement;
88+
8589
@override
8690
// Coverage-ignore(suite): Not run.
8791
Iterable<Reference> get exportedMemberReferences =>
@@ -124,6 +128,10 @@ class DillExtensionSetterBuilder extends DillExtensionMemberBuilder {
124128
// Coverage-ignore(suite): Not run.
125129
Reference? get invokeTargetReference => null;
126130

131+
@override
132+
// Coverage-ignore(suite): Not run.
133+
bool get isEnumElement => false;
134+
127135
@override
128136
// Coverage-ignore(suite): Not run.
129137
Iterable<Reference> get exportedMemberReferences => [procedure.reference];
@@ -165,6 +173,10 @@ class DillExtensionGetterBuilder extends DillExtensionMemberBuilder {
165173
// Coverage-ignore(suite): Not run.
166174
Reference get invokeTargetReference => procedure.reference;
167175

176+
@override
177+
// Coverage-ignore(suite): Not run.
178+
bool get isEnumElement => false;
179+
168180
@override
169181
// Coverage-ignore(suite): Not run.
170182
Iterable<Reference> get exportedMemberReferences => [procedure.reference];
@@ -206,6 +218,10 @@ class DillExtensionOperatorBuilder extends DillExtensionMemberBuilder {
206218
// Coverage-ignore(suite): Not run.
207219
Reference get invokeTargetReference => procedure.reference;
208220

221+
@override
222+
// Coverage-ignore(suite): Not run.
223+
bool get isEnumElement => false;
224+
209225
@override
210226
// Coverage-ignore(suite): Not run.
211227
Iterable<Reference> get exportedMemberReferences => [procedure.reference];
@@ -249,6 +265,10 @@ class DillExtensionStaticMethodBuilder extends DillExtensionMemberBuilder {
249265
// Coverage-ignore(suite): Not run.
250266
Reference get invokeTargetReference => procedure.reference;
251267

268+
@override
269+
// Coverage-ignore(suite): Not run.
270+
bool get isEnumElement => false;
271+
252272
@override
253273
// Coverage-ignore(suite): Not run.
254274
Iterable<Reference> get exportedMemberReferences => [procedure.reference];
@@ -294,6 +314,10 @@ class DillExtensionInstanceMethodBuilder extends DillExtensionMemberBuilder {
294314
@override
295315
Member get invokeTarget => procedure;
296316

317+
@override
318+
// Coverage-ignore(suite): Not run.
319+
bool get isEnumElement => false;
320+
297321
@override
298322
// Coverage-ignore(suite): Not run.
299323
Reference get invokeTargetReference => procedure.reference;

pkg/front_end/lib/src/dill/dill_extension_type_member_builder.dart

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,10 @@ class DillExtensionTypeFieldBuilder extends DillExtensionTypeMemberBuilder {
124124
// Coverage-ignore(suite): Not run.
125125
bool get isProperty => true;
126126

127+
@override
128+
// Coverage-ignore(suite): Not run.
129+
bool get isEnumElement => field.isEnumElement;
130+
127131
@override
128132
// Coverage-ignore(suite): Not run.
129133
Iterable<Reference> get exportedMemberReferences =>
@@ -165,6 +169,10 @@ class DillExtensionTypeSetterBuilder extends DillExtensionTypeMemberBuilder {
165169
// Coverage-ignore(suite): Not run.
166170
Reference? get invokeTargetReference => null;
167171

172+
@override
173+
// Coverage-ignore(suite): Not run.
174+
bool get isEnumElement => false;
175+
168176
@override
169177
// Coverage-ignore(suite): Not run.
170178
Iterable<Reference> get exportedMemberReferences => [procedure.reference];
@@ -206,6 +214,10 @@ class DillExtensionTypeGetterBuilder extends DillExtensionTypeMemberBuilder {
206214
// Coverage-ignore(suite): Not run.
207215
Reference get invokeTargetReference => procedure.reference;
208216

217+
@override
218+
// Coverage-ignore(suite): Not run.
219+
bool get isEnumElement => false;
220+
209221
@override
210222
// Coverage-ignore(suite): Not run.
211223
Iterable<Reference> get exportedMemberReferences => [procedure.reference];
@@ -247,6 +259,10 @@ class DillExtensionTypeOperatorBuilder extends DillExtensionTypeMemberBuilder {
247259
// Coverage-ignore(suite): Not run.
248260
Reference get invokeTargetReference => procedure.reference;
249261

262+
@override
263+
// Coverage-ignore(suite): Not run.
264+
bool get isEnumElement => false;
265+
250266
@override
251267
// Coverage-ignore(suite): Not run.
252268
Iterable<Reference> get exportedMemberReferences => [procedure.reference];
@@ -290,6 +306,10 @@ class DillExtensionTypeStaticMethodBuilder
290306
// Coverage-ignore(suite): Not run.
291307
Reference get invokeTargetReference => procedure.reference;
292308

309+
@override
310+
// Coverage-ignore(suite): Not run.
311+
bool get isEnumElement => false;
312+
293313
@override
294314
// Coverage-ignore(suite): Not run.
295315
Iterable<Reference> get exportedMemberReferences => [procedure.reference];
@@ -339,6 +359,10 @@ class DillExtensionTypeInstanceMethodBuilder
339359
@override
340360
// Coverage-ignore(suite): Not run.
341361
Reference get invokeTargetReference => procedure.reference;
362+
363+
@override
364+
// Coverage-ignore(suite): Not run.
365+
bool get isEnumElement => false;
342366
}
343367

344368
class DillExtensionTypeConstructorBuilder extends DillExtensionTypeMemberBuilder
@@ -389,6 +413,10 @@ class DillExtensionTypeConstructorBuilder extends DillExtensionTypeMemberBuilder
389413
// Coverage-ignore(suite): Not run.
390414
Reference get invokeTargetReference => constructor.reference;
391415

416+
@override
417+
// Coverage-ignore(suite): Not run.
418+
bool get isEnumElement => false;
419+
392420
@override
393421
// Coverage-ignore(suite): Not run.
394422
Iterable<Reference> get exportedMemberReferences => [constructor.reference];
@@ -433,6 +461,10 @@ class DillExtensionTypeFactoryBuilder extends DillExtensionTypeMemberBuilder {
433461
// Coverage-ignore(suite): Not run.
434462
Reference get invokeTargetReference => _procedure.reference;
435463

464+
@override
465+
// Coverage-ignore(suite): Not run.
466+
bool get isEnumElement => false;
467+
436468
@override
437469
// Coverage-ignore(suite): Not run.
438470
Iterable<Reference> get exportedMemberReferences => [_procedure.reference];

pkg/front_end/lib/src/dill/dill_member_builder.dart

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,10 @@ class DillFieldBuilder extends DillMemberBuilder implements FieldBuilder {
170170
@override
171171
// Coverage-ignore(suite): Not run.
172172
bool get isProperty => true;
173+
174+
@override
175+
// Coverage-ignore(suite): Not run.
176+
bool get isEnumElement => field.isEnumElement;
173177
}
174178

175179
abstract class DillProcedureBuilder extends DillMemberBuilder
@@ -229,6 +233,10 @@ class DillGetterBuilder extends DillProcedureBuilder {
229233
@override
230234
// Coverage-ignore(suite): Not run.
231235
Reference get invokeTargetReference => procedure.reference;
236+
237+
@override
238+
// Coverage-ignore(suite): Not run.
239+
bool get isEnumElement => false;
232240
}
233241

234242
class DillSetterBuilder extends DillProcedureBuilder {
@@ -262,6 +270,10 @@ class DillSetterBuilder extends DillProcedureBuilder {
262270

263271
@override
264272
Reference? get invokeTargetReference => null;
273+
274+
@override
275+
// Coverage-ignore(suite): Not run.
276+
bool get isEnumElement => false;
265277
}
266278

267279
class DillMethodBuilder extends DillProcedureBuilder {
@@ -295,6 +307,10 @@ class DillMethodBuilder extends DillProcedureBuilder {
295307
@override
296308
// Coverage-ignore(suite): Not run.
297309
Reference get invokeTargetReference => procedure.reference;
310+
311+
@override
312+
// Coverage-ignore(suite): Not run.
313+
bool get isEnumElement => false;
298314
}
299315

300316
class DillOperatorBuilder extends DillProcedureBuilder {
@@ -332,6 +348,10 @@ class DillOperatorBuilder extends DillProcedureBuilder {
332348
@override
333349
// Coverage-ignore(suite): Not run.
334350
Reference get invokeTargetReference => procedure.reference;
351+
352+
@override
353+
// Coverage-ignore(suite): Not run.
354+
bool get isEnumElement => false;
335355
}
336356

337357
class DillFactoryBuilder extends DillProcedureBuilder {
@@ -368,6 +388,10 @@ class DillFactoryBuilder extends DillProcedureBuilder {
368388
@override
369389
// Coverage-ignore(suite): Not run.
370390
Reference get invokeTargetReference => procedure.reference;
391+
392+
@override
393+
// Coverage-ignore(suite): Not run.
394+
bool get isEnumElement => false;
371395
}
372396

373397
class DillConstructorBuilder extends DillMemberBuilder
@@ -415,6 +439,10 @@ class DillConstructorBuilder extends DillMemberBuilder
415439
// Coverage-ignore(suite): Not run.
416440
bool get isConst => constructor.isConst;
417441

442+
@override
443+
// Coverage-ignore(suite): Not run.
444+
bool get isEnumElement => false;
445+
418446
@override
419447
// Coverage-ignore(suite): Not run.
420448
Iterable<Reference> get exportedMemberReferences => [constructor.reference];

pkg/front_end/lib/src/fragment/enum.dart

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,12 @@ class EnumFragment extends DeclarationFragment implements Fragment {
1616
late final List<MetadataBuilder>? metadata;
1717
late final MixinApplicationBuilder? supertypeBuilder;
1818
late final List<TypeBuilder>? interfaces;
19-
late final List<EnumConstantInfo?>? enumConstantInfos;
2019
late final List<ConstructorReferenceBuilder> constructorReferences;
2120
late final int startOffset;
2221
late final int endOffset;
2322

23+
final List<EnumElementFragment> enumElements = [];
24+
2425
EnumFragment(this.name, super.fileUri, this.nameOffset, super.typeParameters,
2526
super.typeParameterScope, super._nominalParameterNameSpace);
2627

@@ -38,6 +39,11 @@ class EnumFragment extends DeclarationFragment implements Fragment {
3839
_builder = value;
3940
}
4041

42+
@override
43+
void addEnumElement(EnumElementFragment fragment) {
44+
enumElements.add(fragment);
45+
}
46+
4147
@override
4248
DeclarationFragmentKind get kind => DeclarationFragmentKind.enumDeclaration;
4349

0 commit comments

Comments
 (0)