@@ -3849,6 +3849,8 @@ Parser::parseDecl(ParseDeclOptions Flags,
3849
3849
auto OrigTok = Tok;
3850
3850
bool MayNeedOverrideCompletion = false ;
3851
3851
3852
+ bool HandlerAlreadyCalled = false ;
3853
+
3852
3854
auto parseLetOrVar = [&](bool HasLetOrVarKeyword) {
3853
3855
// Collect all modifiers into a modifier list.
3854
3856
DeclParsingContext.setCreateSyntax (SyntaxKind::VariableDecl);
@@ -3861,8 +3863,7 @@ Parser::parseDecl(ParseDeclOptions Flags,
3861
3863
&& isCodeCompletionFirstPass ())
3862
3864
return ;
3863
3865
std::for_each (Entries.begin (), Entries.end (), Handler);
3864
- if (auto *D = DeclResult.getPtrOrNull ())
3865
- markWasHandled (D);
3866
+ HandlerAlreadyCalled = true ;
3866
3867
};
3867
3868
3868
3869
auto parseFunc = [&](bool HasFuncKeyword) {
@@ -3909,8 +3910,7 @@ Parser::parseDecl(ParseDeclOptions Flags,
3909
3910
isCodeCompletionFirstPass ())
3910
3911
break ;
3911
3912
std::for_each (Entries.begin (), Entries.end (), Handler);
3912
- if (auto *D = DeclResult.getPtrOrNull ())
3913
- markWasHandled (D);
3913
+ HandlerAlreadyCalled = true ;
3914
3914
break ;
3915
3915
}
3916
3916
case tok::kw_class:
@@ -3955,8 +3955,7 @@ Parser::parseDecl(ParseDeclOptions Flags,
3955
3955
break ;
3956
3956
std::for_each (Entries.begin (), Entries.end (), Handler);
3957
3957
MayNeedOverrideCompletion = true ;
3958
- if (auto *D = DeclResult.getPtrOrNull ())
3959
- markWasHandled (D);
3958
+ HandlerAlreadyCalled = true ;
3960
3959
break ;
3961
3960
}
3962
3961
@@ -4136,7 +4135,7 @@ Parser::parseDecl(ParseDeclOptions Flags,
4136
4135
4137
4136
if (DeclResult.isNonNull ()) {
4138
4137
Decl *D = DeclResult.get ();
4139
- if (!declWasHandledAlready (D) )
4138
+ if (!HandlerAlreadyCalled )
4140
4139
Handler (D);
4141
4140
setOriginalDeclarationForDifferentiableAttributes (D->getAttrs (), D);
4142
4141
}
0 commit comments