@@ -3045,20 +3045,13 @@ void Parser::parseDeclListDelayed(IterableDeclContext *IDC) {
3045
3045
if (auto *ext = dyn_cast<ExtensionDecl>(D)) {
3046
3046
parseDeclList (ext->getBraces ().Start , RBLoc, Id,
3047
3047
ParseDeclOptions (DelayedState->Flags ),
3048
- [&] (Decl *D) { ext-> addMember (D); } );
3048
+ ext);
3049
3049
ext->setBraces ({LBLoc, RBLoc});
3050
- } else if (auto *cd = dyn_cast<ClassDecl>(D)) {
3051
- auto handler = [&] (Decl *D) {
3052
- cd->addMember (D);
3053
- };
3054
- parseDeclList (cd->getBraces ().Start , RBLoc, Id,
3055
- ParseDeclOptions (DelayedState->Flags ), handler);
3056
- cd->setBraces ({LBLoc, RBLoc});
3057
3050
} else {
3058
3051
auto *ntd = cast<NominalTypeDecl>(D);
3059
3052
parseDeclList (ntd->getBraces ().Start , RBLoc, Id,
3060
3053
ParseDeclOptions (DelayedState->Flags ),
3061
- [&] (Decl *D) { ntd-> addMember (D); } );
3054
+ ntd);
3062
3055
ntd->setBraces ({LBLoc, RBLoc});
3063
3056
}
3064
3057
}
@@ -3475,13 +3468,14 @@ ParserStatus Parser::parseDeclItem(bool &PreviousHadSemi,
3475
3468
// / \endverbatim
3476
3469
bool Parser::parseDeclList (SourceLoc LBLoc, SourceLoc &RBLoc,
3477
3470
Diag<> ErrorDiag, ParseDeclOptions Options,
3478
- llvm::function_ref< void (Decl*)> handler ) {
3471
+ IterableDeclContext *IDC ) {
3479
3472
ParserStatus Status;
3480
3473
bool PreviousHadSemi = true ;
3481
3474
{
3482
3475
SyntaxParsingContext ListContext (SyntaxContext, SyntaxKind::MemberDeclList);
3483
3476
while (Tok.isNot (tok::r_brace)) {
3484
- Status |= parseDeclItem (PreviousHadSemi, Options, handler);
3477
+ Status |= parseDeclItem (PreviousHadSemi, Options,
3478
+ [&](Decl *D) { IDC->addMember (D); });
3485
3479
if (Tok.isAny (tok::eof, tok::pound_endif, tok::pound_else,
3486
3480
tok::pound_elseif)) {
3487
3481
IsInputIncomplete = true ;
@@ -3608,7 +3602,7 @@ Parser::parseDeclExtension(ParseDeclOptions Flags, DeclAttributes &Attributes) {
3608
3602
PosBeforeLB);
3609
3603
} else {
3610
3604
if (parseDeclList (LBLoc, RBLoc, diag::expected_rbrace_extension,
3611
- Options, [&] (Decl *D) { ext-> addMember (D); } ))
3605
+ Options, ext))
3612
3606
status.setIsParseError ();
3613
3607
}
3614
3608
@@ -5748,7 +5742,7 @@ ParserResult<EnumDecl> Parser::parseDeclEnum(ParseDeclOptions Flags,
5748
5742
PosBeforeLB);
5749
5743
} else {
5750
5744
if (parseDeclList (LBLoc, RBLoc, diag::expected_rbrace_enum,
5751
- Options, [&] (Decl *D) { ED-> addMember (D); } ))
5745
+ Options, ED ))
5752
5746
Status.setIsParseError ();
5753
5747
}
5754
5748
}
@@ -6033,7 +6027,7 @@ ParserResult<StructDecl> Parser::parseDeclStruct(ParseDeclOptions Flags,
6033
6027
PosBeforeLB);
6034
6028
} else {
6035
6029
if (parseDeclList (LBLoc, RBLoc, diag::expected_rbrace_struct,
6036
- Options, [&](Decl *D) {SD-> addMember (D);} ))
6030
+ Options,SD ))
6037
6031
Status.setIsParseError ();
6038
6032
}
6039
6033
}
@@ -6156,11 +6150,8 @@ ParserResult<ClassDecl> Parser::parseDeclClass(ParseDeclOptions Flags,
6156
6150
State->delayDeclList (CD, Options.toRaw (), CurDeclContext, { LBLoc, RBLoc },
6157
6151
PosBeforeLB);
6158
6152
} else {
6159
- auto Handler = [&] (Decl *D) {
6160
- CD->addMember (D);
6161
- };
6162
6153
if (parseDeclList (LBLoc, RBLoc, diag::expected_rbrace_class,
6163
- Options, Handler ))
6154
+ Options, CD ))
6164
6155
Status.setIsParseError ();
6165
6156
}
6166
6157
}
@@ -6266,7 +6257,7 @@ parseDeclProtocol(ParseDeclOptions Flags, DeclAttributes &Attributes) {
6266
6257
PosBeforeLB);
6267
6258
} else {
6268
6259
if (parseDeclList (LBraceLoc, RBraceLoc, diag::expected_rbrace_protocol,
6269
- Options, [&](Decl *D) { Proto-> addMember (D);} ))
6260
+ Options, Proto))
6270
6261
Status.setIsParseError ();
6271
6262
}
6272
6263
}
0 commit comments