From e3b557809604d036af6e00c60f012c2025b59a5e Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Sat, 11 Feb 2023 13:38:04 +0100 Subject: Vendor import of llvm-project main llvmorg-16-init-18548-gb0daacf58f41, the last commit before the upstream release/17.x branch was created. --- .../lib/Tooling/Transformer/SourceCodeBuilders.cpp | 49 +++++++++++----------- 1 file changed, 25 insertions(+), 24 deletions(-) (limited to 'clang/lib/Tooling/Transformer/SourceCodeBuilders.cpp') diff --git a/clang/lib/Tooling/Transformer/SourceCodeBuilders.cpp b/clang/lib/Tooling/Transformer/SourceCodeBuilders.cpp index 7496e968469c..10588a383da0 100644 --- a/clang/lib/Tooling/Transformer/SourceCodeBuilders.cpp +++ b/clang/lib/Tooling/Transformer/SourceCodeBuilders.cpp @@ -72,17 +72,17 @@ bool tooling::isKnownPointerLikeType(QualType Ty, ASTContext &Context) { return match(PointerLikeTy, Ty, Context).size() > 0; } -llvm::Optional tooling::buildParens(const Expr &E, - const ASTContext &Context) { +std::optional tooling::buildParens(const Expr &E, + const ASTContext &Context) { StringRef Text = getText(E, Context); if (Text.empty()) - return llvm::None; + return std::nullopt; if (mayEverNeedParens(E)) return ("(" + Text + ")").str(); return Text.str(); } -llvm::Optional +std::optional tooling::buildDereference(const Expr &E, const ASTContext &Context) { if (const auto *Op = dyn_cast(&E)) if (Op->getOpcode() == UO_AddrOf) { @@ -90,21 +90,21 @@ tooling::buildDereference(const Expr &E, const ASTContext &Context) { StringRef Text = getText(*Op->getSubExpr()->IgnoreParenImpCasts(), Context); if (Text.empty()) - return llvm::None; + return std::nullopt; return Text.str(); } StringRef Text = getText(E, Context); if (Text.empty()) - return llvm::None; + return std::nullopt; // Add leading '*'. if (needParensAfterUnaryOperator(E)) return ("*(" + Text + ")").str(); return ("*" + Text).str(); } -llvm::Optional tooling::buildAddressOf(const Expr &E, - const ASTContext &Context) { +std::optional tooling::buildAddressOf(const Expr &E, + const ASTContext &Context) { if (E.isImplicitCXXThis()) return std::string("this"); if (const auto *Op = dyn_cast(&E)) @@ -113,13 +113,13 @@ llvm::Optional tooling::buildAddressOf(const Expr &E, StringRef Text = getText(*Op->getSubExpr()->IgnoreParenImpCasts(), Context); if (Text.empty()) - return llvm::None; + return std::nullopt; return Text.str(); } // Add leading '&'. StringRef Text = getText(E, Context); if (Text.empty()) - return llvm::None; + return std::nullopt; if (needParensAfterUnaryOperator(E)) { return ("&(" + Text + ")").str(); } @@ -128,7 +128,7 @@ llvm::Optional tooling::buildAddressOf(const Expr &E, // Append the appropriate access operation (syntactically) to `E`, assuming `E` // is a non-pointer value. -static llvm::Optional +static std::optional buildAccessForValue(const Expr &E, const ASTContext &Context) { if (const auto *Op = llvm::dyn_cast(&E)) if (Op->getOpcode() == UO_Deref) { @@ -136,7 +136,7 @@ buildAccessForValue(const Expr &E, const ASTContext &Context) { const Expr *SubExpr = Op->getSubExpr()->IgnoreParenImpCasts(); StringRef DerefText = getText(*SubExpr, Context); if (DerefText.empty()) - return llvm::None; + return std::nullopt; if (needParensBeforeDotOrArrow(*SubExpr)) return ("(" + DerefText + ")->").str(); return (DerefText + "->").str(); @@ -145,7 +145,7 @@ buildAccessForValue(const Expr &E, const ASTContext &Context) { // Add following '.'. StringRef Text = getText(E, Context); if (Text.empty()) - return llvm::None; + return std::nullopt; if (needParensBeforeDotOrArrow(E)) { return ("(" + Text + ").").str(); } @@ -154,7 +154,7 @@ buildAccessForValue(const Expr &E, const ASTContext &Context) { // Append the appropriate access operation (syntactically) to `E`, assuming `E` // is a pointer value. -static llvm::Optional +static std::optional buildAccessForPointer(const Expr &E, const ASTContext &Context) { if (const auto *Op = llvm::dyn_cast(&E)) if (Op->getOpcode() == UO_AddrOf) { @@ -162,7 +162,7 @@ buildAccessForPointer(const Expr &E, const ASTContext &Context) { const Expr *SubExpr = Op->getSubExpr()->IgnoreParenImpCasts(); StringRef DerefText = getText(*SubExpr, Context); if (DerefText.empty()) - return llvm::None; + return std::nullopt; if (needParensBeforeDotOrArrow(*SubExpr)) return ("(" + DerefText + ").").str(); return (DerefText + ".").str(); @@ -171,19 +171,19 @@ buildAccessForPointer(const Expr &E, const ASTContext &Context) { // Add following '->'. StringRef Text = getText(E, Context); if (Text.empty()) - return llvm::None; + return std::nullopt; if (needParensBeforeDotOrArrow(E)) return ("(" + Text + ")->").str(); return (Text + "->").str(); } -llvm::Optional tooling::buildDot(const Expr &E, - const ASTContext &Context) { +std::optional tooling::buildDot(const Expr &E, + const ASTContext &Context) { return buildAccessForValue(E, Context); } -llvm::Optional tooling::buildArrow(const Expr &E, - const ASTContext &Context) { +std::optional tooling::buildArrow(const Expr &E, + const ASTContext &Context) { return buildAccessForPointer(E, Context); } @@ -210,11 +210,12 @@ static bool treatLikePointer(QualType Ty, PLTClass C, ASTContext &Context) { // FIXME: move over the other `maybe` functionality from Stencil. Should all be // in one place. -llvm::Optional tooling::buildAccess(const Expr &RawExpression, - ASTContext &Context, - PLTClass Classification) { +std::optional tooling::buildAccess(const Expr &RawExpression, + ASTContext &Context, + PLTClass Classification) { if (RawExpression.isImplicitCXXThis()) - // Return the empty string, because `None` signifies some sort of failure. + // Return the empty string, because `std::nullopt` signifies some sort of + // failure. return std::string(); const Expr *E = RawExpression.IgnoreImplicitAsWritten(); -- cgit v1.2.3