diff --git a/clang/include/clang/Parse/Parser.h b/clang/include/clang/Parse/Parser.h index 98db8201390be..0b2fab4a45c96 100644 --- a/clang/include/clang/Parse/Parser.h +++ b/clang/include/clang/Parse/Parser.h @@ -2598,8 +2598,7 @@ class Parser : public CodeCompletionHandler { void ParseTypeQualifierListOpt( DeclSpec &DS, unsigned AttrReqs = AR_AllAttributesParsed, bool AtomicOrPtrauthAllowed = true, bool IdentifierRequired = false, - std::optional> CodeCompletionHandler = - std::nullopt); + llvm::function_ref CodeCompletionHandler = {}); /// ParseDirectDeclarator /// \verbatim diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp index d6c36616bab47..f469e466e4634 100644 --- a/clang/lib/Parse/ParseDecl.cpp +++ b/clang/lib/Parse/ParseDecl.cpp @@ -6124,8 +6124,7 @@ bool Parser::isConstructorDeclarator(bool IsUnqualified, bool DeductionGuide, void Parser::ParseTypeQualifierListOpt( DeclSpec &DS, unsigned AttrReqs, bool AtomicOrPtrauthAllowed, - bool IdentifierRequired, - std::optional> CodeCompletionHandler) { + bool IdentifierRequired, llvm::function_ref CodeCompletionHandler) { if ((AttrReqs & AR_CXX11AttributesParsed) && isAllowedCXX11AttributeSpecifier()) { ParsedAttributes Attrs(AttrFactory); @@ -6145,7 +6144,7 @@ void Parser::ParseTypeQualifierListOpt( case tok::code_completion: cutOffParsing(); if (CodeCompletionHandler) - (*CodeCompletionHandler)(); + CodeCompletionHandler(); else Actions.CodeCompletion().CodeCompleteTypeQualifiers(DS); return; @@ -7236,9 +7235,9 @@ void Parser::ParseFunctionDeclarator(Declarator &D, ParseTypeQualifierListOpt( DS, AR_NoAttributesParsed, /*AtomicOrPtrauthAllowed=*/false, - /*IdentifierRequired=*/false, llvm::function_ref([&]() { + /*IdentifierRequired=*/false, [&]() { Actions.CodeCompletion().CodeCompleteFunctionQualifiers(DS, D); - })); + }); if (!DS.getSourceRange().getEnd().isInvalid()) { EndLoc = DS.getSourceRange().getEnd(); } diff --git a/clang/lib/Parse/ParseDeclCXX.cpp b/clang/lib/Parse/ParseDeclCXX.cpp index 2cf33a856c4f4..0b5f56fea0b14 100644 --- a/clang/lib/Parse/ParseDeclCXX.cpp +++ b/clang/lib/Parse/ParseDeclCXX.cpp @@ -2649,9 +2649,9 @@ void Parser::MaybeParseAndDiagnoseDeclSpecAfterCXX11VirtSpecifierSeq( // handled by the caller. Diagnose everything else. ParseTypeQualifierListOpt( DS, AR_NoAttributesParsed, /*AtomicOrPtrauthAllowed=*/false, - /*IdentifierRequired=*/false, llvm::function_ref([&]() { + /*IdentifierRequired=*/false, [&]() { Actions.CodeCompletion().CodeCompleteFunctionQualifiers(DS, D, &VS); - })); + }); D.ExtendWithDeclSpec(DS); if (D.isFunctionDeclarator()) {