[clang] [clang-tools-extra] [clang][AST] Add public wrapper getOpcodeStr to UnaryOperator (PR #230692)
via cfe-commits
cfe-commits at lists.llvm.org
Sat Oct 10 03:14:17 PDT 2026
https://github.com/LocalPiper updated https://github.com/llvm/llvm-project/pull/230692
>From fe24680838eda8d05fca2550ad576ed552a60c3b Mon Sep 17 00:00:00 2001
From: LocalPiper <artsor53 at gmail.com>
Date: Sat, 10 Oct 2026 01:22:06 +0300
Subject: [PATCH 1/2] [clang][AST] Add public wrapper getOpcodeStr to
UnaryOperator
---
clang/include/clang/AST/Expr.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/clang/include/clang/AST/Expr.h b/clang/include/clang/AST/Expr.h
index 6863d9c2633df..7187db2306f2d 100644
--- a/clang/include/clang/AST/Expr.h
+++ b/clang/include/clang/AST/Expr.h
@@ -2399,6 +2399,8 @@ class UnaryOperator final
/// corresponds to, e.g. "sizeof" or "[pre]++"
static StringRef getOpcodeStr(Opcode Op);
+ StringRef getOpcodeStr() const { return getOpcodeStr(getOpcode()); }
+
/// Retrieve the unary opcode that corresponds to the given
/// overloaded operator.
static Opcode getOverloadedOpcode(OverloadedOperatorKind OO, bool Postfix);
>From 896346d4fecc410ffe1751643a5538547c82d2da Mon Sep 17 00:00:00 2001
From: LocalPiper <artsor53 at gmail.com>
Date: Sat, 10 Oct 2026 13:13:38 +0300
Subject: [PATCH 2/2] [clang][AST] Add public member getOpcodeStr usage per
review feedback
---
clang-tools-extra/clangd/DumpAST.cpp | 2 +-
clang/include/clang/ASTMatchers/ASTMatchersInternal.h | 4 ++--
clang/lib/Analysis/UnsafeBufferUsage.cpp | 2 +-
.../Tooling/RecursiveASTVisitorTestPostOrderVisitor.cpp | 2 +-
4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/clang-tools-extra/clangd/DumpAST.cpp b/clang-tools-extra/clangd/DumpAST.cpp
index faa18fb7baa46..61a1245f5a859 100644
--- a/clang-tools-extra/clangd/DumpAST.cpp
+++ b/clang-tools-extra/clangd/DumpAST.cpp
@@ -237,7 +237,7 @@ class DumpVisitor : public RecursiveASTVisitor<DumpVisitor> {
if (const auto *BO = dyn_cast<BinaryOperator>(S))
return BO->getOpcodeStr().str();
if (const auto *UO = dyn_cast<UnaryOperator>(S))
- return UnaryOperator::getOpcodeStr(UO->getOpcode()).str();
+ return UO->getOpcodeStr().str();
if (const auto *CCO = dyn_cast<CXXConstructExpr>(S))
return CCO->getConstructor()->getNameAsString();
if (const auto *CTE = dyn_cast<CXXThisExpr>(S)) {
diff --git a/clang/include/clang/ASTMatchers/ASTMatchersInternal.h b/clang/include/clang/ASTMatchers/ASTMatchersInternal.h
index fcf5cd2faf969..859fe85e98d75 100644
--- a/clang/include/clang/ASTMatchers/ASTMatchersInternal.h
+++ b/clang/include/clang/ASTMatchers/ASTMatchersInternal.h
@@ -2254,7 +2254,7 @@ std::optional<SourceLocation> getExpansionLocOfMacro(StringRef MacroName,
const ASTContext &Context);
inline std::optional<StringRef> getOpName(const UnaryOperator &Node) {
- return Node.getOpcodeStr(Node.getOpcode());
+ return Node.getOpcodeStr();
}
inline std::optional<StringRef> getOpName(const BinaryOperator &Node) {
return Node.getOpcodeStr();
@@ -2297,7 +2297,7 @@ class HasAnyOperatorNameMatcher : public SingleNodeMatcherInterface<T> {
private:
static std::optional<StringRef> getOpName(const UnaryOperator &Node) {
- return Node.getOpcodeStr(Node.getOpcode());
+ return Node.getOpcodeStr();
}
static std::optional<StringRef> getOpName(const BinaryOperator &Node) {
return Node.getOpcodeStr();
diff --git a/clang/lib/Analysis/UnsafeBufferUsage.cpp b/clang/lib/Analysis/UnsafeBufferUsage.cpp
index 09f610358ca65..99601fdca6d82 100644
--- a/clang/lib/Analysis/UnsafeBufferUsage.cpp
+++ b/clang/lib/Analysis/UnsafeBufferUsage.cpp
@@ -53,7 +53,7 @@ class StmtDebugPrinter
}
std::string VisitUnaryOperator(const UnaryOperator *UO) {
- return "UnaryOperator(" + UO->getOpcodeStr(UO->getOpcode()).str() + ")";
+ return "UnaryOperator(" + UO->getOpcodeStr().str() + ")";
}
std::string VisitImplicitCastExpr(const ImplicitCastExpr *ICE) {
diff --git a/clang/unittests/Tooling/RecursiveASTVisitorTestPostOrderVisitor.cpp b/clang/unittests/Tooling/RecursiveASTVisitorTestPostOrderVisitor.cpp
index 481559ed08efd..ce3c867228bd9 100644
--- a/clang/unittests/Tooling/RecursiveASTVisitorTestPostOrderVisitor.cpp
+++ b/clang/unittests/Tooling/RecursiveASTVisitorTestPostOrderVisitor.cpp
@@ -29,7 +29,7 @@ class RecordingVisitor : public CRTPTestVisitor<RecordingVisitor> {
bool shouldTraversePostOrder() const { return VisitPostOrder; }
bool VisitUnaryOperator(UnaryOperator *Op) {
- VisitedNodes.push_back(std::string(Op->getOpcodeStr(Op->getOpcode())));
+ VisitedNodes.push_back(std::string(Op->getOpcodeStr()));
return true;
}
More information about the cfe-commits
mailing list