Skip to content

Commit d0cd5ce

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Implement children2 for specific Element2 subclasses.
Change-Id: Ief3864287beecb811bfcc1754e8ebcb0f4ccfdbb Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/390080 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 4a80b6d commit d0cd5ce

File tree

1 file changed

+126
-3
lines changed

1 file changed

+126
-3
lines changed

pkg/analyzer/lib/src/dart/element/element.dart

Lines changed: 126 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,11 @@ class ClassElementImpl extends ClassOrMixinElementImpl
298298
return null;
299299
}
300300

301+
@override
302+
List<Element2> get children2 {
303+
throw StateError('This is a fragment');
304+
}
305+
301306
@override
302307
set constructors(List<ConstructorElementImpl> constructors) {
303308
assert(!isMixinApplication);
@@ -821,6 +826,11 @@ class CompilationUnitElementImpl extends UriReferencedElementImpl
821826
...topLevelVariables,
822827
];
823828

829+
@override
830+
List<Element2> get children2 {
831+
throw StateError('This is a fragment');
832+
}
833+
824834
@override
825835
List<Fragment> get children3 => children.cast<Fragment>();
826836

@@ -1345,6 +1355,11 @@ class ConstructorElementImpl extends ExecutableElementImpl
13451355
}
13461356
}
13471357

1358+
@override
1359+
List<Element2> get children2 {
1360+
throw StateError('This is a fragment');
1361+
}
1362+
13481363
/// Return the constant initializers for this element, which will be empty if
13491364
/// there are no initializers, or `null` if there was an error in the source.
13501365
List<ConstructorInitializer> get constantInitializers {
@@ -1897,6 +1912,9 @@ class DynamicElementImpl extends ElementImpl implements TypeDefiningElement {
18971912
setModifier(Modifier.SYNTHETIC, true);
18981913
}
18991914

1915+
@override
1916+
List<Element2> get children2 => const [];
1917+
19001918
@override
19011919
ElementKind get kind => ElementKind.DYNAMIC;
19021920

@@ -2370,9 +2388,6 @@ abstract class ElementImpl implements Element, Element2 {
23702388
@override
23712389
List<Element> get children => const [];
23722390

2373-
@override
2374-
List<Element2> get children2 => children.cast<Element2>();
2375-
23762391
/// The length of the element's code, or `null` if the element is synthetic.
23772392
int? get codeLength => _codeLength;
23782393

@@ -3375,6 +3390,11 @@ class EnumElementImpl extends InterfaceElementImpl
33753390
return null;
33763391
}
33773392

3393+
@override
3394+
List<Element2> get children2 {
3395+
throw StateError('This is a fragment');
3396+
}
3397+
33783398
List<FieldElementImpl> get constants {
33793399
return fields.where((field) => field.isEnumConstant).toList();
33803400
}
@@ -3657,6 +3677,11 @@ class ExtensionElementImpl extends InstanceElementImpl
36573677
...typeParameters,
36583678
];
36593679

3680+
@override
3681+
List<Element2> get children2 {
3682+
throw StateError('This is a fragment');
3683+
}
3684+
36603685
@override
36613686
String get displayName => name ?? '';
36623687

@@ -3777,6 +3802,11 @@ class ExtensionTypeElementImpl extends InterfaceElementImpl
37773802
return null;
37783803
}
37793804

3805+
@override
3806+
List<Element2> get children2 {
3807+
throw StateError('This is a fragment');
3808+
}
3809+
37803810
@override
37813811
ExtensionTypeElement2 get element => super.element as ExtensionTypeElement2;
37823812

@@ -3833,6 +3863,11 @@ class FieldElementImpl extends PropertyInducingElementImpl
38333863
/// [name] at the given [offset].
38343864
FieldElementImpl(super.name, super.offset);
38353865

3866+
@override
3867+
List<Element2> get children2 {
3868+
throw StateError('This is a fragment');
3869+
}
3870+
38363871
@override
38373872
FieldElement get declaration => this;
38383873

@@ -4689,6 +4724,14 @@ class FunctionElementImpl extends ExecutableElementImpl
46894724
/// [nameOffset]. This is used for function expressions, that have no name.
46904725
FunctionElementImpl.forOffset(int nameOffset) : super("", nameOffset);
46914726

4727+
@override
4728+
List<Element2> get children2 {
4729+
if (enclosingElement3 is LibraryFragment) {
4730+
return element.children2;
4731+
}
4732+
throw StateError('Not an Element2');
4733+
}
4734+
46924735
@override
46934736
ExecutableElement get declaration => this;
46944737

@@ -4815,6 +4858,12 @@ class GenericFunctionTypeElementImpl extends _ExistingElementImpl
48154858
...parameters,
48164859
];
48174860

4861+
@override
4862+
List<Element2> get children2 {
4863+
// TODO(scheglov): implement
4864+
throw UnimplementedError();
4865+
}
4866+
48184867
@override
48194868
GenericFunctionTypeElement2 get element =>
48204869
throw UnsupportedError('This is not a fragment');
@@ -5651,6 +5700,9 @@ class LabelElementImpl extends ElementImpl implements LabelElement {
56515700
/// `switch` member.
56525701
LabelElementImpl(String super.name, super.nameOffset, this._onSwitchMember);
56535702

5703+
@override
5704+
List<Element2> get children2 => const [];
5705+
56545706
@override
56555707
String get displayName => name;
56565708

@@ -5807,6 +5859,20 @@ class LibraryElementImpl extends LibraryOrAugmentationElementImpl
58075859
..._partUnits,
58085860
];
58095861

5862+
@override
5863+
List<Element2> get children2 {
5864+
return [
5865+
...classes,
5866+
...extensions,
5867+
...extensionTypes,
5868+
...functions,
5869+
...mixins,
5870+
...typeAliases,
5871+
...getters,
5872+
...topLevelVariables,
5873+
];
5874+
}
5875+
58105876
@override
58115877
List<ClassElement2> get classes {
58125878
var declarations = <ClassElement2>{};
@@ -6295,6 +6361,11 @@ class LibraryExportElementImpl extends _ExistingElementImpl
62956361
required this.uri,
62966362
}) : super(null, exportKeywordOffset);
62976363

6364+
@override
6365+
List<Element2> get children2 {
6366+
throw StateError('Not an Element2');
6367+
}
6368+
62986369
@override
62996370
LibraryElementImpl? get exportedLibrary {
63006371
var uri = this.uri;
@@ -6359,6 +6430,11 @@ class LibraryImportElementImpl extends _ExistingElementImpl
63596430
required this.uri,
63606431
}) : super(null, importKeywordOffset);
63616432

6433+
@override
6434+
List<Element2> get children2 {
6435+
throw StateError('Not an Element2');
6436+
}
6437+
63626438
@override
63636439
CompilationUnitElementImpl get enclosingElement3 {
63646440
return super.enclosingElement3 as CompilationUnitElementImpl;
@@ -6651,6 +6727,9 @@ class LocalVariableElementImpl extends NonParameterVariableElementImpl
66516727
/// [offset].
66526728
LocalVariableElementImpl(super.name, super.offset);
66536729

6730+
@override
6731+
List<Element2> get children2 => const [];
6732+
66546733
LocalVariableElementImpl2 get element2 => _element2;
66556734

66566735
@override
@@ -7405,6 +7484,11 @@ class MethodElementImpl extends ExecutableElementImpl
74057484
/// given [offset].
74067485
MethodElementImpl(super.name, super.offset);
74077486

7487+
@override
7488+
List<Element2> get children2 {
7489+
throw StateError('This is a fragment');
7490+
}
7491+
74087492
@override
74097493
MethodElement get declaration => this;
74107494

@@ -7567,6 +7651,11 @@ class MixinElementImpl extends ClassOrMixinElementImpl
75677651
return null;
75687652
}
75697653

7654+
@override
7655+
List<Element2> get children2 {
7656+
throw StateError('This is a fragment');
7657+
}
7658+
75707659
@override
75717660
MixinElement2 get element => super.element as MixinElement2;
75727661

@@ -8075,6 +8164,9 @@ class NeverElementImpl extends ElementImpl implements TypeDefiningElement {
80758164
setModifier(Modifier.SYNTHETIC, true);
80768165
}
80778166

8167+
@override
8168+
List<Element2> get children2 => const [];
8169+
80788170
@override
80798171
ElementKind get kind => ElementKind.NEVER;
80808172

@@ -8337,6 +8429,9 @@ class ParameterElementImpl extends VariableElementImpl
83378429
@override
83388430
List<Element> get children => parameters;
83398431

8432+
@override
8433+
List<Element2> get children2 => const [];
8434+
83408435
@override
83418436
List<Fragment> get children3 => const [];
83428437

@@ -8582,6 +8677,11 @@ class PartElementImpl extends _ExistingElementImpl
85828677
required this.uri,
85838678
}) : super(null, -1);
85848679

8680+
@override
8681+
List<Element2> get children2 {
8682+
throw StateError('Not an Element2');
8683+
}
8684+
85858685
@override
85868686
CompilationUnitElementImpl get enclosingUnit {
85878687
var enclosingLibrary = enclosingElement3 as LibraryElementImpl;
@@ -8652,6 +8752,9 @@ class PrefixElementImpl extends _ExistingElementImpl implements PrefixElement {
86528752
/// [nameOffset].
86538753
PrefixElementImpl(String super.name, super.nameOffset, {super.reference});
86548754

8755+
@override
8756+
List<Element2> get children2 => const [];
8757+
86558758
@override
86568759
String get displayName => name;
86578760

@@ -8868,6 +8971,11 @@ class PropertyAccessorElementImpl extends ExecutableElementImpl
88688971
return null;
88698972
}
88708973

8974+
@override
8975+
List<Element2> get children2 {
8976+
throw StateError('This is a fragment');
8977+
}
8978+
88718979
@override
88728980
PropertyAccessorElement? get correspondingGetter {
88738981
if (isGetter) {
@@ -9543,6 +9651,11 @@ class TopLevelVariableElementImpl extends PropertyInducingElementImpl
95439651
/// the given [name] and [offset].
95449652
TopLevelVariableElementImpl(super.name, super.offset);
95459653

9654+
@override
9655+
List<Element2> get children2 {
9656+
throw StateError('This is a fragment');
9657+
}
9658+
95469659
@override
95479660
TopLevelVariableElement get declaration => this;
95489661

@@ -9713,6 +9826,11 @@ class TypeAliasElementImpl extends _ExistingElementImpl
97139826
/// The aliased type, might be `null` if not yet linked.
97149827
DartType? get aliasedTypeRaw => _aliasedType;
97159828

9829+
@override
9830+
List<Element2> get children2 {
9831+
throw StateError('This is a fragment');
9832+
}
9833+
97169834
@override
97179835
String get displayName => name;
97189836

@@ -10035,6 +10153,11 @@ class TypeParameterElementImpl extends ElementImpl
1003510153
}
1003610154
}
1003710155

10156+
@override
10157+
List<Element2> get children2 {
10158+
throw StateError('This is a fragment');
10159+
}
10160+
1003810161
@override
1003910162
List<Fragment> get children3 => const [];
1004010163

0 commit comments

Comments
 (0)