File tree Expand file tree Collapse file tree 3 files changed +14
-2
lines changed Expand file tree Collapse file tree 3 files changed +14
-2
lines changed Original file line number Diff line number Diff line change @@ -411,6 +411,8 @@ Bug Fixes in This Version
411411 - ``#embed `` directive now diagnoses use of a non-character file (device file)
412412 such as ``/dev/urandom `` as an error. This restriction may be relaxed in the
413413 future. See (#GH126629).
414+ - Fixed a clang 20 regression where diagnostics attached to some calls to member functions
415+ using C++23 "deducing this" did not have a diagnostic location (#GH135522)
414416
415417Bug Fixes to Compiler Builtins
416418^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Original file line number Diff line number Diff line change @@ -1652,8 +1652,11 @@ SourceLocation CallExpr::getBeginLoc() const {
16521652 if (!isTypeDependent ()) {
16531653 if (const auto *Method =
16541654 dyn_cast_if_present<const CXXMethodDecl>(getCalleeDecl ());
1655- Method && Method->isExplicitObjectMemberFunction ())
1656- return getArg (0 )->getBeginLoc ();
1655+ Method && Method->isExplicitObjectMemberFunction ()) {
1656+ if (auto FirstArgLoc = getArg (0 )->getBeginLoc (); FirstArgLoc.isValid ()) {
1657+ return FirstArgLoc;
1658+ }
1659+ }
16571660 }
16581661
16591662 SourceLocation begin = getCallee ()->getBeginLoc ();
Original file line number Diff line number Diff line change @@ -1134,3 +1134,10 @@ struct S {
11341134static_assert ((S{} << 11 ) == a);
11351135// expected-error@-1 {{use of undeclared identifier 'a'}}
11361136}
1137+
1138+ namespace GH135522 {
1139+ struct S {
1140+ auto f (this auto ) -> S;
1141+ bool g () { return f (); } // expected-error {{no viable conversion from returned value of type 'S' to function return type 'bool'}}
1142+ };
1143+ }
You can’t perform that action at this time.
0 commit comments