[PATCH] D125949: [clang-tidy] modernize-avoid-bind: Fix crash when method name is not a simple identifier
Joachim Priesner via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu May 19 00:03:56 PDT 2022
jspam created this revision.
Herald added subscribers: carlosgalvezp, xazax.hun.
Herald added a project: All.
jspam requested review of this revision.
Herald added a project: clang-tools-extra.
Herald added a subscriber: cfe-commits.
The following assertion fails when referencing an operator member:
include/clang/AST/Decl.h:275: llvm::StringRef clang::NamedDecl::getName() const: Assertion `Name.isIdentifier() && "Name is not a simple identifier"' failed.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D125949
Files:
clang-tools-extra/clang-tidy/modernize/AvoidBindCheck.cpp
clang-tools-extra/test/clang-tidy/checkers/modernize-avoid-bind.cpp
Index: clang-tools-extra/test/clang-tidy/checkers/modernize-avoid-bind.cpp
===================================================================
--- clang-tools-extra/test/clang-tidy/checkers/modernize-avoid-bind.cpp
+++ clang-tools-extra/test/clang-tidy/checkers/modernize-avoid-bind.cpp
@@ -43,6 +43,7 @@
struct D {
D() = default;
void operator()(int x, int y) const {}
+ operator bool() const { return true; }
void MemberFunction(int x) {}
@@ -360,6 +361,14 @@
auto DDD = std::bind(&D::MemberFunction, _1, 1);
// CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer a lambda to std::bind
// CHECK-FIXES: auto DDD = [](auto && PH1) { PH1->MemberFunction(1); };
+
+ auto EEE = std::bind(&D::operator(), d, 1, 2);
+ // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer a lambda to std::bind
+ // CHECK-FIXES: auto EEE = [d] { d->operator()(1, 2); }
+
+ auto FFF = std::bind(&D::operator bool, d);
+ // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: prefer a lambda to std::bind
+ // CHECK-FIXES: auto FFF = [d] { d->operator bool(); }
}
};
Index: clang-tools-extra/clang-tidy/modernize/AvoidBindCheck.cpp
===================================================================
--- clang-tools-extra/clang-tidy/modernize/AvoidBindCheck.cpp
+++ clang-tools-extra/clang-tidy/modernize/AvoidBindCheck.cpp
@@ -690,7 +690,7 @@
Stream << "->";
}
- Stream << MethodDecl->getName();
+ Stream << MethodDecl->getNameAsString();
} else {
Stream << " { return ";
switch (LP.Callable.CE) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D125949.430587.patch
Type: text/x-patch
Size: 1547 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20220519/8c0ec978/attachment.bin>
More information about the cfe-commits
mailing list