@@ -124,19 +124,21 @@ class ElementBuilder extends ThrowingAstVisitor<void> {
124124 _libraryBuilder.declare (name, reference);
125125 }
126126
127- var holder = _EnclosingContext (reference, element);
127+ var holder = _EnclosingContext (reference, element,
128+ constFieldsForFinalInstance: true );
128129 _withEnclosing (holder, () {
129- var typeParameters = node.typeParameters;
130- if (typeParameters != null ) {
131- typeParameters.accept (this );
132- element.typeParameters = holder.typeParameters;
133- }
130+ node.typeParameters? .accept (this );
131+ _visitPropertyFirst <FieldDeclaration >(node.members);
134132 });
133+ element.typeParameters = holder.typeParameters;
134+ element.accessors = holder.propertyAccessors;
135+ element.constructors = holder.constructors;
136+ element.fields = holder.fields;
137+ element.methods = holder.methods;
135138
136139 node.extendsClause? .accept (this );
137140 node.withClause? .accept (this );
138141 node.implementsClause? .accept (this );
139- _buildClass (node);
140142
141143 _libraryBuilder.updateAugmentationTarget (name, element);
142144
@@ -512,23 +514,13 @@ class ElementBuilder extends ThrowingAstVisitor<void> {
512514
513515 var holder = _EnclosingContext (reference, element);
514516 _withEnclosing (holder, () {
515- var typeParameters = node.typeParameters;
516- if (typeParameters != null ) {
517- typeParameters.accept (this );
518- element.typeParameters = holder.typeParameters;
519- }
517+ node.typeParameters? .accept (this );
518+ _visitPropertyFirst <FieldDeclaration >(node.members);
520519 });
521-
522- // TODO(scheglov): don't create a duplicate
523- {
524- var holder = _EnclosingContext (reference, element);
525- _withEnclosing (holder, () {
526- _visitPropertyFirst <FieldDeclaration >(node.members);
527- });
528- element.accessors = holder.propertyAccessors;
529- element.fields = holder.fields;
530- element.methods = holder.methods;
531- }
520+ element.typeParameters = holder.typeParameters;
521+ element.accessors = holder.propertyAccessors;
522+ element.fields = holder.fields;
523+ element.methods = holder.methods;
532524
533525 node.onClause? .accept (this );
534526
@@ -1111,16 +1103,16 @@ class ElementBuilder extends ThrowingAstVisitor<void> {
11111103
11121104 var holder = _EnclosingContext (reference, element);
11131105 _withEnclosing (holder, () {
1114- var typeParameters = node.typeParameters;
1115- if (typeParameters != null ) {
1116- typeParameters.accept (this );
1117- element.typeParameters = holder.typeParameters;
1118- }
1106+ node.typeParameters? .accept (this );
1107+ _visitPropertyFirst <FieldDeclaration >(node.members);
11191108 });
1109+ element.typeParameters = holder.typeParameters;
1110+ element.accessors = holder.propertyAccessors;
1111+ element.fields = holder.fields;
1112+ element.methods = holder.methods;
11201113
11211114 node.onClause? .accept (this );
11221115 node.implementsClause? .accept (this );
1123- _buildMixin (node);
11241116
11251117 _libraryBuilder.updateAugmentationTarget (name, element);
11261118
@@ -1387,21 +1379,6 @@ class ElementBuilder extends ThrowingAstVisitor<void> {
13871379 return _buildAnnotationsWithUnit (_unitElement, nodeList);
13881380 }
13891381
1390- void _buildClass (ClassDeclaration node) {
1391- var element = node.declaredElement as ClassElementImpl ;
1392- // TODO(scheglov): don't create a duplicate
1393- var holder = _EnclosingContext (element.reference! , element,
1394- constFieldsForFinalInstance: true );
1395- _withEnclosing (holder, () {
1396- _visitPropertyFirst <FieldDeclaration >(node.members);
1397- });
1398-
1399- element.accessors = holder.propertyAccessors;
1400- element.constructors = holder.constructors;
1401- element.fields = holder.fields;
1402- element.methods = holder.methods;
1403- }
1404-
14051382 void _buildExecutableElementChildren ({
14061383 required Reference reference,
14071384 required ExecutableElementImpl element,
@@ -1436,19 +1413,6 @@ class ElementBuilder extends ThrowingAstVisitor<void> {
14361413 );
14371414 }
14381415
1439- void _buildMixin (MixinDeclaration node) {
1440- var element = node.declaredElement as MixinElementImpl ;
1441- // TODO(scheglov): don't create a duplicate
1442- var holder = _EnclosingContext (element.reference! , element);
1443- _withEnclosing (holder, () {
1444- _visitPropertyFirst <FieldDeclaration >(node.members);
1445- });
1446-
1447- element.accessors = holder.propertyAccessors;
1448- element.fields = holder.fields;
1449- element.methods = holder.methods;
1450- }
1451-
14521416 void _buildSyntheticVariable ({
14531417 required String name,
14541418 required PropertyAccessorElementImpl accessorElement,
0 commit comments