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) {
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) {
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits