@@ -11,13 +11,12 @@ import 'package:analyzer/src/dart/element/type_algebra.dart';
1111import 'package:analyzer/src/utilities/extensions/element.dart' ;
1212import '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