Skip to content

Commit 3a9553d

Browse files
johnniwintherCommit Queue
authored andcommitted
[cfe] Simplify _endClassMethod into _endClassMethod/_endClassConstructor
This splits the implementation of _endClassMethod into _endClassMethod which handles method declarations and _endClassConstructor which handles constructor declarations. Unused parts in both are removed. Change-Id: Ia9f3dda230840686d57369284a57cd37c3dd671d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/460400 Reviewed-by: Jens Johansen <[email protected]> Commit-Queue: Johnni Winther <[email protected]>
1 parent a0397d6 commit 3a9553d

12 files changed

+286
-354
lines changed

pkg/front_end/lib/src/source/diet_listener.dart

Lines changed: 51 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -856,14 +856,7 @@ class DietListener extends StackListenerImpl {
856856
Token? beginInitializers,
857857
Token endToken,
858858
) {
859-
_endClassMethod(
860-
getOrSet,
861-
beginToken,
862-
beginParam,
863-
beginInitializers,
864-
endToken,
865-
false,
866-
);
859+
_endClassMethod(getOrSet, beginToken, beginParam);
867860
}
868861

869862
@override
@@ -874,14 +867,7 @@ class DietListener extends StackListenerImpl {
874867
Token? beginInitializers,
875868
Token endToken,
876869
) {
877-
_endClassMethod(
878-
getOrSet,
879-
beginToken,
880-
beginParam,
881-
beginInitializers,
882-
endToken,
883-
true,
884-
);
870+
_endClassConstructor(beginToken, beginParam);
885871
}
886872

887873
@override
@@ -892,14 +878,7 @@ class DietListener extends StackListenerImpl {
892878
Token? beginInitializers,
893879
Token endToken,
894880
) {
895-
_endClassMethod(
896-
getOrSet,
897-
beginToken,
898-
beginParam,
899-
beginInitializers,
900-
endToken,
901-
false,
902-
);
881+
_endClassMethod(getOrSet, beginToken, beginParam);
903882
}
904883

905884
@override
@@ -920,14 +899,7 @@ class DietListener extends StackListenerImpl {
920899
Token? beginInitializers,
921900
Token endToken,
922901
) {
923-
_endClassMethod(
924-
getOrSet,
925-
beginToken,
926-
beginParam,
927-
beginInitializers,
928-
endToken,
929-
false,
930-
);
902+
_endClassMethod(getOrSet, beginToken, beginParam);
931903
}
932904

933905
@override
@@ -938,24 +910,10 @@ class DietListener extends StackListenerImpl {
938910
Token? beginInitializers,
939911
Token endToken,
940912
) {
941-
_endClassMethod(
942-
getOrSet,
943-
beginToken,
944-
beginParam,
945-
beginInitializers,
946-
endToken,
947-
true,
948-
);
913+
_endClassConstructor(beginToken, beginParam);
949914
}
950915

951-
void _endClassMethod(
952-
Token? getOrSet,
953-
Token beginToken,
954-
Token beginParam,
955-
Token? beginInitializers,
956-
Token endToken,
957-
bool isConstructor,
958-
) {
916+
void _endClassMethod(Token? getOrSet, Token beginToken, Token beginParam) {
959917
debugEvent("Method");
960918
assert(
961919
checkState(beginToken, [
@@ -975,22 +933,18 @@ class DietListener extends StackListenerImpl {
975933
Identifier identifier = name as Identifier;
976934

977935
FunctionFragment functionFragment;
978-
if (isConstructor) {
979-
functionFragment = _offsetMap.lookupConstructor(identifier);
980-
} else {
981-
ProcedureKind kind = computeProcedureKind(getOrSet);
982-
switch (kind) {
983-
case ProcedureKind.Method:
984-
case ProcedureKind.Operator:
985-
functionFragment = _offsetMap.lookupMethod(identifier);
986-
case ProcedureKind.Getter:
987-
functionFragment = _offsetMap.lookupGetter(identifier);
988-
case ProcedureKind.Setter:
989-
functionFragment = _offsetMap.lookupSetter(identifier);
990-
// Coverage-ignore(suite): Not run.
991-
case ProcedureKind.Factory:
992-
throw new UnsupportedError("Unexpected procedure kind: $kind");
993-
}
936+
ProcedureKind kind = computeProcedureKind(getOrSet);
937+
switch (kind) {
938+
case ProcedureKind.Method:
939+
case ProcedureKind.Operator:
940+
functionFragment = _offsetMap.lookupMethod(identifier);
941+
case ProcedureKind.Getter:
942+
functionFragment = _offsetMap.lookupGetter(identifier);
943+
case ProcedureKind.Setter:
944+
functionFragment = _offsetMap.lookupSetter(identifier);
945+
// Coverage-ignore(suite): Not run.
946+
case ProcedureKind.Factory:
947+
throw new UnsupportedError("Unexpected procedure kind: $kind");
994948
}
995949
FunctionBodyBuildingContext functionBodyBuildingContext = functionFragment
996950
.createFunctionBodyBuildingContext();
@@ -999,6 +953,35 @@ class DietListener extends StackListenerImpl {
999953
}
1000954
}
1001955

956+
void _endClassConstructor(Token beginToken, Token beginParam) {
957+
debugEvent("Method");
958+
assert(
959+
checkState(beginToken, [
960+
/* bodyToken */ ValueKinds.Token,
961+
/* name */ ValueKinds.IdentifierOrParserRecovery,
962+
/* metadata token */ ValueKinds.TokenOrNull,
963+
]),
964+
);
965+
// TODO(danrubel): Consider removing the beginParam parameter
966+
// and using bodyToken, but pushing a NullValue on the stack
967+
// in handleNoFormalParameters rather than the supplied token.
968+
pop(); // bodyToken
969+
Object? name = pop();
970+
Token? metadata = pop() as Token?;
971+
checkEmpty(beginToken.charOffset);
972+
if (name is ParserRecovery || currentClassIsParserRecovery) return;
973+
Identifier identifier = name as Identifier;
974+
975+
FunctionFragment functionFragment = _offsetMap.lookupConstructor(
976+
identifier,
977+
);
978+
FunctionBodyBuildingContext functionBodyBuildingContext = functionFragment
979+
.createFunctionBodyBuildingContext();
980+
if (functionBodyBuildingContext.shouldBuild) {
981+
buildFunctionBody(functionBodyBuildingContext, beginParam, metadata);
982+
}
983+
}
984+
1002985
void _buildFields(int count, Token token, bool isTopLevel) {
1003986
assert(
1004987
checkState(
@@ -1319,14 +1302,7 @@ class DietListener extends StackListenerImpl {
13191302
Token endToken,
13201303
) {
13211304
debugEvent("endExtensionTypeConstructor");
1322-
_endClassMethod(
1323-
getOrSet,
1324-
beginToken,
1325-
beginParam,
1326-
beginInitializers,
1327-
endToken,
1328-
true,
1329-
);
1305+
_endClassConstructor(beginToken, beginParam);
13301306
}
13311307

13321308
@override
@@ -1338,14 +1314,7 @@ class DietListener extends StackListenerImpl {
13381314
Token endToken,
13391315
) {
13401316
debugEvent("endExtensionTypeFactoryMethod");
1341-
_endClassMethod(
1342-
getOrSet,
1343-
beginToken,
1344-
beginParam,
1345-
beginInitializers,
1346-
endToken,
1347-
false,
1348-
);
1317+
_endClassMethod(getOrSet, beginToken, beginParam);
13491318
}
13501319

13511320
@override
@@ -1420,14 +1389,7 @@ class DietListener extends StackListenerImpl {
14201389
Token? beginInitializers,
14211390
Token endToken,
14221391
) {
1423-
_endClassMethod(
1424-
getOrSet,
1425-
beginToken,
1426-
beginParam,
1427-
beginInitializers,
1428-
endToken,
1429-
true,
1430-
);
1392+
_endClassConstructor(beginToken, beginParam);
14311393
}
14321394

14331395
@override
@@ -1438,14 +1400,7 @@ class DietListener extends StackListenerImpl {
14381400
Token? beginInitializers,
14391401
Token endToken,
14401402
) {
1441-
_endClassMethod(
1442-
getOrSet,
1443-
beginToken,
1444-
beginParam,
1445-
beginInitializers,
1446-
endToken,
1447-
false,
1448-
);
1403+
_endClassMethod(getOrSet, beginToken, beginParam);
14491404
}
14501405

14511406
@override

pkg/front_end/lib/src/source/fragment_factory.dart

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -324,23 +324,20 @@ abstract class FragmentFactory {
324324
required int nameOffset,
325325
required int formalsOffset,
326326
required Modifiers modifiers,
327-
required bool inConstructor,
328327
required bool isStatic,
329-
required bool isConstructor,
330328
required bool forAbstractClassOrMixin,
331329
required bool isExtensionMember,
332330
required bool isExtensionTypeMember,
333331
required AsyncMarker asyncModifier,
334332
required String? nativeMethodName,
335-
required ProcedureKind? kind,
333+
required ProcedureKind kind,
336334
});
337335

338336
void addConstructor({
339337
required OffsetMap offsetMap,
340338
required List<MetadataBuilder>? metadata,
341339
required Modifiers modifiers,
342340
required Identifier identifier,
343-
required ConstructorName constructorName,
344341
required List<TypeParameterFragment>? typeParameters,
345342
required List<FormalParameterBuilder>? formals,
346343
required int startOffset,

0 commit comments

Comments
 (0)