Skip to content

Commit 5537727

Browse files
committed
[Parse] Make parseDeclEnumCase() return ParserResult for EnumCaseDecl
1 parent 3705e2e commit 5537727

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

include/swift/Parse/Parser.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -736,8 +736,9 @@ class Parser {
736736
DeclAttributes &Attributes);
737737
ParserResult<EnumDecl> parseDeclEnum(ParseDeclOptions Flags,
738738
DeclAttributes &Attributes);
739-
ParserStatus parseDeclEnumCase(ParseDeclOptions Flags, DeclAttributes &Attributes,
740-
SmallVectorImpl<Decl *> &decls);
739+
ParserResult<EnumCaseDecl>
740+
parseDeclEnumCase(ParseDeclOptions Flags, DeclAttributes &Attributes,
741+
SmallVectorImpl<Decl *> &decls);
741742
ParserResult<StructDecl>
742743
parseDeclStruct(ParseDeclOptions Flags, DeclAttributes &Attributes);
743744
ParserResult<ClassDecl>

lib/Parse/ParseDecl.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2264,8 +2264,11 @@ ParserStatus Parser::parseDecl(ParseDeclOptions Flags,
22642264
break;
22652265
case tok::kw_case: {
22662266
llvm::SmallVector<Decl *, 4> Entries;
2267-
Status = parseDeclEnumCase(Flags, Attributes, Entries);
2267+
DeclResult = parseDeclEnumCase(Flags, Attributes, Entries);
2268+
Status = DeclResult;
22682269
std::for_each(Entries.begin(), Entries.end(), InternalHandler);
2270+
if (auto *D = DeclResult.getPtrOrNull())
2271+
markWasHandled(D);
22692272
break;
22702273
}
22712274
case tok::kw_struct:
@@ -4980,9 +4983,10 @@ ParserResult<EnumDecl> Parser::parseDeclEnum(ParseDeclOptions Flags,
49804983
/// decl-enum-element:
49814984
/// 'case' attribute-list enum-case (',' enum-case)*
49824985
/// \endverbatim
4983-
ParserStatus Parser::parseDeclEnumCase(ParseDeclOptions Flags,
4984-
DeclAttributes &Attributes,
4985-
llvm::SmallVectorImpl<Decl *> &Decls) {
4986+
ParserResult<EnumCaseDecl>
4987+
Parser::parseDeclEnumCase(ParseDeclOptions Flags,
4988+
DeclAttributes &Attributes,
4989+
llvm::SmallVectorImpl<Decl *> &Decls) {
49864990
ParserStatus Status;
49874991
SourceLoc CaseLoc = consumeToken(tok::kw_case);
49884992

@@ -5139,7 +5143,7 @@ ParserStatus Parser::parseDeclEnumCase(ParseDeclOptions Flags,
51395143

51405144
// Insert the element decls.
51415145
std::copy(Elements.begin(), Elements.end(), std::back_inserter(Decls));
5142-
return Status;
5146+
return makeParserResult(Status, TheCase);
51435147
}
51445148

51455149
/// \brief Parse a 'struct' declaration, returning true (and doing no token

0 commit comments

Comments
 (0)