@@ -3849,6 +3849,8 @@ Parser::parseDecl(ParseDeclOptions Flags,
38493849 auto OrigTok = Tok;
38503850 bool MayNeedOverrideCompletion = false ;
38513851
3852+ bool HandlerAlreadyCalled = false ;
3853+
38523854 auto parseLetOrVar = [&](bool HasLetOrVarKeyword) {
38533855 // Collect all modifiers into a modifier list.
38543856 DeclParsingContext.setCreateSyntax (SyntaxKind::VariableDecl);
@@ -3861,8 +3863,7 @@ Parser::parseDecl(ParseDeclOptions Flags,
38613863 && isCodeCompletionFirstPass ())
38623864 return ;
38633865 std::for_each (Entries.begin (), Entries.end (), Handler);
3864- if (auto *D = DeclResult.getPtrOrNull ())
3865- markWasHandled (D);
3866+ HandlerAlreadyCalled = true ;
38663867 };
38673868
38683869 auto parseFunc = [&](bool HasFuncKeyword) {
@@ -3909,8 +3910,7 @@ Parser::parseDecl(ParseDeclOptions Flags,
39093910 isCodeCompletionFirstPass ())
39103911 break ;
39113912 std::for_each (Entries.begin (), Entries.end (), Handler);
3912- if (auto *D = DeclResult.getPtrOrNull ())
3913- markWasHandled (D);
3913+ HandlerAlreadyCalled = true ;
39143914 break ;
39153915 }
39163916 case tok::kw_class:
@@ -3955,8 +3955,7 @@ Parser::parseDecl(ParseDeclOptions Flags,
39553955 break ;
39563956 std::for_each (Entries.begin (), Entries.end (), Handler);
39573957 MayNeedOverrideCompletion = true ;
3958- if (auto *D = DeclResult.getPtrOrNull ())
3959- markWasHandled (D);
3958+ HandlerAlreadyCalled = true ;
39603959 break ;
39613960 }
39623961
@@ -4136,7 +4135,7 @@ Parser::parseDecl(ParseDeclOptions Flags,
41364135
41374136 if (DeclResult.isNonNull ()) {
41384137 Decl *D = DeclResult.get ();
4139- if (!declWasHandledAlready (D) )
4138+ if (!HandlerAlreadyCalled )
41404139 Handler (D);
41414140 setOriginalDeclarationForDifferentiableAttributes (D->getAttrs (), D);
41424141 }
0 commit comments