From b1d2d7c1285b4f8a9bce3ad519164bd0351ef979 Mon Sep 17 00:00:00 2001 From: Yanzuo Liu Date: Sat, 7 Jun 2025 21:52:48 +0800 Subject: [PATCH] [Clang][Parse][NFC] Use `llvm::function_ref<>` instead of `std::optional>` (#142906) There is no need to distinguish between null `optional` and null `function_ref` in this case. --- clang/include/clang/Parse/Parser.h | 3 +-- clang/lib/Parse/ParseDecl.cpp | 9 ++++----- clang/lib/Parse/ParseDeclCXX.cpp | 4 ++-- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/clang/include/clang/Parse/Parser.h b/clang/include/clang/Parse/Parser.h index 98db8201390b..0b2fab4a45c9 100644 --- a/clang/include/clang/Parse/Parser.h +++ b/clang/include/clang/Parse/Parser.h @@ -2598,8 +2598,7 @@ private: 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 d6c36616bab4..f469e466e463 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 2cf33a856c4f..0b5f56fea0b1 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()) {