@@ -2454,7 +2454,8 @@ Parser::parseDecl(ParseDeclOptions Flags,
2454
2454
2455
2455
ParserStatus Status;
2456
2456
bool PreviousHadSemi = true ;
2457
- SyntaxParsingContext DeclListCtx (SyntaxContext, SyntaxKind::DeclList);
2457
+ SyntaxParsingContext DeclListCtx (SyntaxContext,
2458
+ SyntaxKind::MemberDeclList);
2458
2459
while (Tok.isNot (tok::pound_else, tok::pound_endif, tok::pound_elseif,
2459
2460
tok::eof)) {
2460
2461
if (Tok.is (tok::r_brace)) {
@@ -3103,7 +3104,6 @@ void Parser::diagnoseConsecutiveIDs(StringRef First, SourceLoc FirstLoc,
3103
3104
ParserStatus Parser::parseDeclItem (bool &PreviousHadSemi,
3104
3105
Parser::ParseDeclOptions Options,
3105
3106
llvm::function_ref<void (Decl*)> handler) {
3106
- SyntaxParsingContext DeclContext (SyntaxContext, SyntaxContextKind::Decl);
3107
3107
if (Tok.is (tok::semi)) {
3108
3108
// Consume ';' without preceding decl.
3109
3109
diagnose (Tok, diag::unexpected_separator, " ;" )
@@ -3128,9 +3128,15 @@ ParserStatus Parser::parseDeclItem(bool &PreviousHadSemi,
3128
3128
return LineDirectiveStatus;
3129
3129
}
3130
3130
3131
- auto Result = parseDecl (Options, handler);
3132
- if (Result.isParseError ())
3133
- skipUntilDeclRBrace (tok::semi, tok::pound_endif);
3131
+ ParserResult<Decl> Result;
3132
+ SyntaxParsingContext DeclContext (SyntaxContext,
3133
+ SyntaxKind::MemberDeclListItem);
3134
+ {
3135
+ SyntaxParsingContext DeclContext (SyntaxContext, SyntaxContextKind::Decl);
3136
+ Result = parseDecl (Options, handler);
3137
+ if (Result.isParseError ())
3138
+ skipUntilDeclRBrace (tok::semi, tok::pound_endif);
3139
+ }
3134
3140
SourceLoc SemiLoc;
3135
3141
PreviousHadSemi = consumeIf (tok::semi, SemiLoc);
3136
3142
if (PreviousHadSemi && Result.isNonNull ())
@@ -3149,7 +3155,7 @@ bool Parser::parseDeclList(SourceLoc LBLoc, SourceLoc &RBLoc,
3149
3155
ParserStatus Status;
3150
3156
bool PreviousHadSemi = true ;
3151
3157
{
3152
- SyntaxParsingContext ListContext (SyntaxContext, SyntaxKind::DeclList );
3158
+ SyntaxParsingContext ListContext (SyntaxContext, SyntaxKind::MemberDeclList );
3153
3159
while (Tok.isNot (tok::r_brace)) {
3154
3160
Status |= parseDeclItem (PreviousHadSemi, Options, handler);
3155
3161
if (Tok.isAny (tok::eof, tok::pound_endif, tok::pound_else,
0 commit comments