Author: Nathan Ridge Date: 2025-04-15T12:04:35-04:00 New Revision: 289baf1f42c8b5773271b611cd235d4ab94bb4e8
URL: https://github.com/llvm/llvm-project/commit/289baf1f42c8b5773271b611cd235d4ab94bb4e8 DIFF: https://github.com/llvm/llvm-project/commit/289baf1f42c8b5773271b611cd235d4ab94bb4e8.diff LOG: [clang][AST] Handle implicit first argument in CallExpr::getBeginLoc() (#135757) Fixes https://github.com/llvm/llvm-project/issues/135522 Added: Modified: clang/docs/ReleaseNotes.rst clang/lib/AST/Expr.cpp clang/test/SemaCXX/cxx2b-deducing-this.cpp Removed: ################################################################################ diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 2d2606085998c..c106148855436 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -411,6 +411,8 @@ Bug Fixes in This Version - ``#embed`` directive now diagnoses use of a non-character file (device file) such as ``/dev/urandom`` as an error. This restriction may be relaxed in the future. See (#GH126629). +- Fixed a clang 20 regression where diagnostics attached to some calls to member functions + using C++23 "deducing this" did not have a diagnostic location (#GH135522) Bug Fixes to Compiler Builtins ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/clang/lib/AST/Expr.cpp b/clang/lib/AST/Expr.cpp index 5fab2c73f214b..59c0e47c7c195 100644 --- a/clang/lib/AST/Expr.cpp +++ b/clang/lib/AST/Expr.cpp @@ -1652,8 +1652,11 @@ SourceLocation CallExpr::getBeginLoc() const { if (!isTypeDependent()) { if (const auto *Method = dyn_cast_if_present<const CXXMethodDecl>(getCalleeDecl()); - Method && Method->isExplicitObjectMemberFunction()) - return getArg(0)->getBeginLoc(); + Method && Method->isExplicitObjectMemberFunction()) { + if (auto FirstArgLoc = getArg(0)->getBeginLoc(); FirstArgLoc.isValid()) { + return FirstArgLoc; + } + } } SourceLocation begin = getCallee()->getBeginLoc(); diff --git a/clang/test/SemaCXX/cxx2b-deducing-this.cpp b/clang/test/SemaCXX/cxx2b-deducing-this.cpp index 6f17ce7275456..7e392213710a4 100644 --- a/clang/test/SemaCXX/cxx2b-deducing-this.cpp +++ b/clang/test/SemaCXX/cxx2b-deducing-this.cpp @@ -1134,3 +1134,10 @@ struct S { static_assert((S{} << 11) == a); // expected-error@-1 {{use of undeclared identifier 'a'}} } + +namespace GH135522 { +struct S { + auto f(this auto) -> S; + bool g() { return f(); } // expected-error {{no viable conversion from returned value of type 'S' to function return type 'bool'}} +}; +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits