@@ -605,6 +605,11 @@ class ClassElementImpl extends ClassOrMixinElementImpl
605605 implicitConstructor.name = name;
606606 implicitConstructor.nameOffset = - 1 ;
607607
608+ implicitConstructor.element = ConstructorElementImpl2 (
609+ superclassConstructor.element.name3,
610+ implicitConstructor,
611+ );
612+
608613 var containerRef = reference! .getChild ('@constructor' );
609614 var referenceName = name.ifNotEmptyOrElse ('new' );
610615 var implicitReference = containerRef.getChild (referenceName);
@@ -1372,15 +1377,21 @@ class ConstructorElementImpl extends ExecutableElementImpl
13721377 if (_element != null ) {
13731378 return _element! ;
13741379 }
1380+
13751381 ConstructorFragment firstFragment = this ;
13761382 var previousFragment = firstFragment.previousFragment;
13771383 while (previousFragment != null ) {
13781384 firstFragment = previousFragment;
13791385 previousFragment = firstFragment.previousFragment;
13801386 }
1387+ firstFragment as ConstructorElementImpl ;
1388+
13811389 // As a side-effect of creating the element, all of the fragments in the
13821390 // chain will have their `_element` set to the newly created element.
1383- return ConstructorElementImpl2 (firstFragment as ConstructorElementImpl );
1391+ return ConstructorElementImpl2 (
1392+ firstFragment.name2? .name ?? 'new' ,
1393+ firstFragment,
1394+ );
13841395 }
13851396
13861397 set element (ConstructorElement2 element) => _element = element;
@@ -1530,10 +1541,13 @@ class ConstructorElementImpl2 extends ExecutableElementImpl2
15301541 FragmentedAnnotatableElementMixin <ConstructorFragment >,
15311542 FragmentedElementMixin <ConstructorFragment >
15321543 implements ConstructorElement2 {
1544+ @override
1545+ final String ? name3;
1546+
15331547 @override
15341548 final ConstructorElementImpl firstFragment;
15351549
1536- ConstructorElementImpl2 (this .firstFragment) {
1550+ ConstructorElementImpl2 (this .name3, this . firstFragment) {
15371551 ConstructorElementImpl ? fragment = firstFragment;
15381552 while (fragment != null ) {
15391553 fragment.element = this ;
@@ -1563,9 +1577,6 @@ class ConstructorElementImpl2 extends ExecutableElementImpl2
15631577 @override
15641578 ElementKind get kind => ElementKind .CONSTRUCTOR ;
15651579
1566- @override
1567- String get name3 => firstFragment.name;
1568-
15691580 @override
15701581 ConstructorElement2 ? get redirectedConstructor2 =>
15711582 (firstFragment.redirectedConstructor? .declaration
@@ -3997,7 +4008,7 @@ class FieldElementImpl2 extends PropertyInducingElementImpl2
39974008 ElementKind get kind => ElementKind .FIELD ;
39984009
39994010 @override
4000- String get name3 => firstFragment.name;
4011+ String ? get name3 => firstFragment.name;
40014012
40024013 @override
40034014 SetterElement ? get setter2 => firstFragment.setter? .element as SetterElement ? ;
@@ -4167,7 +4178,7 @@ class FormalParameterElementImpl extends PromotableElementImpl2
41674178 as LibraryElement2 ;
41684179
41694180 @override
4170- String get name3 => firstFragment.name;
4181+ String ? get name3 => firstFragment.name;
41714182
41724183 @override
41734184 // TODO(augmentations): Implement the merge of formal parameters.
@@ -7578,15 +7589,18 @@ class MethodElementImpl extends ExecutableElementImpl
75787589 if (_element != null ) {
75797590 return _element! ;
75807591 }
7592+
75817593 MethodFragment firstFragment = this ;
75827594 var previousFragment = firstFragment.previousFragment;
75837595 while (previousFragment != null ) {
75847596 firstFragment = previousFragment;
75857597 previousFragment = firstFragment.previousFragment;
75867598 }
7599+ firstFragment as MethodElementImpl ;
7600+
75877601 // As a side-effect of creating the element, all of the fragments in the
75887602 // chain will have their `_element` set to the newly created element.
7589- return MethodElementImpl2 (firstFragment as MethodElementImpl );
7603+ return MethodElementImpl2 (firstFragment.name2 ? .name, firstFragment );
75907604 }
75917605
75927606 set element (MethodElement2 element) => _element = element;
@@ -7651,10 +7665,13 @@ class MethodElementImpl2 extends ExecutableElementImpl2
76517665 FragmentedAnnotatableElementMixin <MethodFragment >,
76527666 FragmentedElementMixin <MethodFragment >
76537667 implements MethodElement2 {
7668+ @override
7669+ final String ? name3;
7670+
76547671 @override
76557672 final MethodElementImpl firstFragment;
76567673
7657- MethodElementImpl2 (this .firstFragment) {
7674+ MethodElementImpl2 (this .name3, this . firstFragment) {
76587675 MethodElementImpl ? fragment = firstFragment;
76597676 while (fragment != null ) {
76607677 fragment.element = this ;
@@ -7675,9 +7692,6 @@ class MethodElementImpl2 extends ExecutableElementImpl2
76757692 @override
76767693 ElementKind get kind => ElementKind .METHOD ;
76777694
7678- @override
7679- String get name3 => firstFragment.name;
7680-
76817695 @override
76827696 T ? accept2 <T >(ElementVisitor2 <T > visitor) {
76837697 return visitor.visitMethodElement (this );
@@ -9483,10 +9497,7 @@ abstract class PropertyInducingElementImpl
94839497}
94849498
94859499abstract class PropertyInducingElementImpl2 extends VariableElementImpl2
9486- implements PropertyInducingElement2 {
9487- @override
9488- String get name3;
9489- }
9500+ implements PropertyInducingElement2 {}
94909501
94919502/// Instances of this class are set for fields and top-level variables
94929503/// to perform top-level type inference during linking.
@@ -9810,7 +9821,7 @@ class TopLevelVariableElementImpl2 extends PropertyInducingElementImpl2
98109821 ElementKind get kind => ElementKind .TOP_LEVEL_VARIABLE ;
98119822
98129823 @override
9813- String get name3 => firstFragment.name;
9824+ String ? get name3 => firstFragment.name;
98149825
98159826 @override
98169827 SetterElement ? get setter2 =>
@@ -10129,7 +10140,7 @@ class TypeAliasElementImpl2 extends TypeDefiningElementImpl2
1012910140 ElementKind get kind => ElementKind .TYPE_ALIAS ;
1013010141
1013110142 @override
10132- String get name3 => firstFragment.name;
10143+ String ? get name3 => firstFragment.name2 ? .name;
1013310144
1013410145 @override
1013510146 List <TypeParameterElement2 > get typeParameters2 =>
@@ -10666,7 +10677,7 @@ mixin WrappedElementMixin implements ElementImpl2 {
1066610677 LibraryElement2 ? get library2 => _wrappedElement.library2;
1066710678
1066810679 @override
10669- String get name3 => _wrappedElement.name ! ;
10680+ String ? get name3 => _wrappedElement.name3 ;
1067010681
1067110682 ElementImpl get _wrappedElement;
1067210683
0 commit comments