Skip to content

Commit caf3c82

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Put element into builders.
Change-Id: Ieb8dbd09783a805e2b67d1bfcb3ace580825f5e6 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/393180 Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]>
1 parent a868303 commit caf3c82

File tree

2 files changed

+89
-82
lines changed

2 files changed

+89
-82
lines changed

pkg/analyzer/lib/src/summary2/augmentation.dart

Lines changed: 62 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,12 @@ import 'package:analyzer/src/dart/element/type_algebra.dart';
1111
import 'package:analyzer/src/utilities/extensions/element.dart';
1212
import 'package:analyzer/src/utilities/extensions/string.dart';
1313

14-
class ClassElementBuilder extends InstanceElementBuilder<ClassElementImpl> {
14+
class ClassElementBuilder extends InstanceElementBuilder<
15+
AugmentedClassElementImpl, ClassElementImpl> {
1516
ClassElementBuilder({
17+
required super.element,
1618
required super.firstFragment,
17-
required AugmentedClassElementImpl element,
18-
}) {
19-
firstFragment.augmentedInternal = element;
20-
}
19+
});
2120

2221
void addFragment(ClassElementImpl fragment) {
2322
addFields(fragment.fields);
@@ -31,21 +30,18 @@ class ClassElementBuilder extends InstanceElementBuilder<ClassElementImpl> {
3130
lastFragment.augmentation = fragment;
3231
lastFragment = fragment;
3332

34-
var element = firstFragment.augmentedInternal;
35-
fragment.augmentedInternal = element;
36-
37-
_updatedAugmented(element, fragment);
33+
fragment.augmentedInternal = firstFragment.element;
34+
_updatedAugmented(fragment);
3835
}
3936
}
4037
}
4138

42-
class EnumElementBuilder extends InstanceElementBuilder<EnumElementImpl> {
39+
class EnumElementBuilder
40+
extends InstanceElementBuilder<AugmentedEnumElementImpl, EnumElementImpl> {
4341
EnumElementBuilder({
42+
required super.element,
4443
required super.firstFragment,
45-
required AugmentedEnumElementImpl element,
46-
}) {
47-
firstFragment.augmentedInternal = element;
48-
}
44+
});
4945

5046
void addFragment(EnumElementImpl fragment) {
5147
addFields(fragment.fields);
@@ -59,22 +55,18 @@ class EnumElementBuilder extends InstanceElementBuilder<EnumElementImpl> {
5955
lastFragment.augmentation = fragment;
6056
lastFragment = fragment;
6157

62-
var element = firstFragment.augmentedInternal;
63-
fragment.augmentedInternal = element;
64-
65-
_updatedAugmented(element, fragment);
58+
fragment.augmentedInternal = firstFragment.element;
59+
_updatedAugmented(fragment);
6660
}
6761
}
6862
}
6963

70-
class ExtensionElementBuilder
71-
extends InstanceElementBuilder<ExtensionElementImpl> {
64+
class ExtensionElementBuilder extends InstanceElementBuilder<
65+
AugmentedExtensionElementImpl, ExtensionElementImpl> {
7266
ExtensionElementBuilder({
67+
required super.element,
7368
required super.firstFragment,
74-
required AugmentedExtensionElementImpl element,
75-
}) {
76-
firstFragment.augmentedInternal = element;
77-
}
69+
});
7870

7971
void addFragment(ExtensionElementImpl fragment) {
8072
addFields(fragment.fields);
@@ -87,22 +79,18 @@ class ExtensionElementBuilder
8779
lastFragment.augmentation = fragment;
8880
lastFragment = fragment;
8981

90-
var element = firstFragment.augmentedInternal;
91-
fragment.augmentedInternal = element;
92-
93-
_updatedAugmented(element, fragment);
82+
fragment.augmentedInternal = firstFragment.element;
83+
_updatedAugmented(fragment);
9484
}
9585
}
9686
}
9787

98-
class ExtensionTypeElementBuilder
99-
extends InstanceElementBuilder<ExtensionTypeElementImpl> {
88+
class ExtensionTypeElementBuilder extends InstanceElementBuilder<
89+
AugmentedExtensionTypeElementImpl, ExtensionTypeElementImpl> {
10090
ExtensionTypeElementBuilder({
91+
required super.element,
10192
required super.firstFragment,
102-
required AugmentedExtensionTypeElementImpl element,
103-
}) {
104-
firstFragment.augmentedInternal = element;
105-
}
93+
});
10694

10795
void addFragment(ExtensionTypeElementImpl fragment) {
10896
addFields(fragment.fields);
@@ -116,20 +104,20 @@ class ExtensionTypeElementBuilder
116104
lastFragment.augmentation = fragment;
117105
lastFragment = fragment;
118106

119-
var element = firstFragment.augmentedInternal;
120-
fragment.augmentedInternal = element;
121-
122-
_updatedAugmented(element, fragment);
107+
fragment.augmentedInternal = firstFragment.element;
108+
_updatedAugmented(fragment);
123109
}
124110
}
125111
}
126112

127113
/// A builder for top-level fragmented elements, e.g. classes.
128-
class FragmentedElementBuilder<F extends Fragment> {
114+
class FragmentedElementBuilder<E extends Element2, F extends Fragment> {
115+
final E element;
129116
final F firstFragment;
130117
F lastFragment;
131118

132119
FragmentedElementBuilder({
120+
required this.element,
133121
required this.firstFragment,
134122
}) : lastFragment = firstFragment;
135123

@@ -150,9 +138,10 @@ class FragmentedElementBuilder<F extends Fragment> {
150138
}
151139
}
152140

153-
class FunctionElementBuilder
154-
extends FragmentedElementBuilder<FunctionElementImpl> {
141+
class FunctionElementBuilder extends FragmentedElementBuilder<
142+
TopLevelFunctionElementImpl, FunctionElementImpl> {
155143
FunctionElementBuilder({
144+
required super.element,
156145
required super.firstFragment,
157146
});
158147

@@ -164,9 +153,10 @@ class FunctionElementBuilder
164153
}
165154
}
166155

167-
class GetterElementBuilder
168-
extends FragmentedElementBuilder<PropertyAccessorElementImpl> {
156+
class GetterElementBuilder extends FragmentedElementBuilder<GetterElementImpl,
157+
PropertyAccessorElementImpl> {
169158
GetterElementBuilder({
159+
required super.element,
170160
required super.firstFragment,
171161
});
172162

@@ -178,15 +168,16 @@ class GetterElementBuilder
178168
}
179169
}
180170

181-
abstract class InstanceElementBuilder<F extends InstanceElementImpl>
182-
extends FragmentedElementBuilder<F> {
171+
abstract class InstanceElementBuilder<E extends AugmentedInstanceElementImpl,
172+
F extends InstanceElementImpl> extends FragmentedElementBuilder<E, F> {
183173
final Map<String, FieldElementImpl> fields = {};
184174
final Map<String, ConstructorElementImpl> constructors = {};
185175
final Map<String, PropertyAccessorElementImpl> getters = {};
186176
final Map<String, PropertyAccessorElementImpl> setters = {};
187177
final Map<String, MethodElementImpl> methods = {};
188178

189179
InstanceElementBuilder({
180+
required super.element,
190181
required super.firstFragment,
191182
});
192183

@@ -303,11 +294,8 @@ abstract class InstanceElementBuilder<F extends InstanceElementImpl>
303294
return target;
304295
}
305296

306-
// TODO(scheglov): remove [augmented]
307-
void _updatedAugmented(
308-
AugmentedInstanceElementImpl augmented,
309-
InstanceElementImpl augmentation,
310-
) {
297+
void _updatedAugmented(InstanceElementImpl augmentation) {
298+
var element = this.element;
311299
var firstFragment = this.firstFragment;
312300
var firstTypeParameters = firstFragment.typeParameters;
313301

@@ -330,9 +318,9 @@ abstract class InstanceElementBuilder<F extends InstanceElementImpl>
330318

331319
if (augmentation is InterfaceElementImpl &&
332320
firstFragment is InterfaceElementImpl &&
333-
augmented is AugmentedInterfaceElementImpl) {
334-
augmented.constructors = [
335-
...augmented.constructors.notAugmented,
321+
element is AugmentedInterfaceElementImpl) {
322+
element.constructors = [
323+
...element.constructors.notAugmented,
336324
...augmentation.constructors.notAugmented.map((element) {
337325
if (toFirstFragment.map.isEmpty) {
338326
return element;
@@ -346,8 +334,8 @@ abstract class InstanceElementBuilder<F extends InstanceElementImpl>
346334
];
347335
}
348336

349-
augmented.fields = [
350-
...augmented.fields.notAugmented,
337+
element.fields = [
338+
...element.fields.notAugmented,
351339
...augmentation.fields.notAugmented.map((element) {
352340
if (toFirstFragment.map.isEmpty) {
353341
return element;
@@ -356,8 +344,8 @@ abstract class InstanceElementBuilder<F extends InstanceElementImpl>
356344
}),
357345
];
358346

359-
augmented.accessors = [
360-
...augmented.accessors.notAugmented,
347+
element.accessors = [
348+
...element.accessors.notAugmented,
361349
...augmentation.accessors.notAugmented.map((element) {
362350
if (toFirstFragment.map.isEmpty) {
363351
return element;
@@ -367,8 +355,8 @@ abstract class InstanceElementBuilder<F extends InstanceElementImpl>
367355
}),
368356
];
369357

370-
augmented.methods = [
371-
...augmented.methods.notAugmented,
358+
element.methods = [
359+
...element.methods.notAugmented,
372360
...augmentation.methods.notAugmented.map((element) {
373361
if (toFirstFragment.map.isEmpty) {
374362
return element;
@@ -379,13 +367,12 @@ abstract class InstanceElementBuilder<F extends InstanceElementImpl>
379367
}
380368
}
381369

382-
class MixinElementBuilder extends InstanceElementBuilder<MixinElementImpl> {
370+
class MixinElementBuilder extends InstanceElementBuilder<
371+
AugmentedMixinElementImpl, MixinElementImpl> {
383372
MixinElementBuilder({
373+
required super.element,
384374
required super.firstFragment,
385-
required AugmentedMixinElementImpl element,
386-
}) {
387-
firstFragment.augmentedInternal = element;
388-
}
375+
});
389376

390377
void addFragment(MixinElementImpl fragment) {
391378
addFields(fragment.fields);
@@ -398,17 +385,16 @@ class MixinElementBuilder extends InstanceElementBuilder<MixinElementImpl> {
398385
lastFragment.augmentation = fragment;
399386
lastFragment = fragment;
400387

401-
var element = firstFragment.augmentedInternal;
402-
fragment.augmentedInternal = element;
403-
404-
_updatedAugmented(element, fragment);
388+
fragment.augmentedInternal = firstFragment.element;
389+
_updatedAugmented(fragment);
405390
}
406391
}
407392
}
408393

409-
class SetterElementBuilder
410-
extends FragmentedElementBuilder<PropertyAccessorElementImpl> {
394+
class SetterElementBuilder extends FragmentedElementBuilder<SetterElementImpl,
395+
PropertyAccessorElementImpl> {
411396
SetterElementBuilder({
397+
required super.element,
412398
required super.firstFragment,
413399
});
414400

@@ -420,9 +406,10 @@ class SetterElementBuilder
420406
}
421407
}
422408

423-
class TopLevelVariableElementBuilder
424-
extends FragmentedElementBuilder<TopLevelVariableElementImpl> {
409+
class TopLevelVariableElementBuilder extends FragmentedElementBuilder<
410+
TopLevelVariableElementImpl2, TopLevelVariableElementImpl> {
425411
TopLevelVariableElementBuilder({
412+
required super.element,
426413
required super.firstFragment,
427414
});
428415

@@ -434,9 +421,10 @@ class TopLevelVariableElementBuilder
434421
}
435422
}
436423

437-
class TypeAliasElementBuilder
438-
extends FragmentedElementBuilder<TypeAliasElementImpl> {
424+
class TypeAliasElementBuilder extends FragmentedElementBuilder<
425+
TypeAliasElementImpl2, TypeAliasElementImpl> {
439426
TypeAliasElementBuilder({
427+
required super.element,
440428
required super.firstFragment,
441429
});
442430

0 commit comments

Comments
 (0)