@@ -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
0 commit comments