Skip to content

Commit 82592f2

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Inline _buildClass()/_buildMixin() and reuse _EnclosingContext.
Change-Id: I974849fb401630c54d9962b2c9dd7f633992d624 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/391542 Reviewed-by: Samuel Rawlins <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent bff7817 commit 82592f2

File tree

1 file changed

+21
-57
lines changed

1 file changed

+21
-57
lines changed

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

Lines changed: 21 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)