diff options
author | cor3ntin <corentinjabot@gmail.com> | 2023-12-20 07:41:24 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-20 07:41:24 +0100 |
commit | c8536760612785e8ee97a5261c20d22c6712b4b2 (patch) | |
tree | 4cba9be524eb869a50f7eb2acc0ccbdb70ca6a82 /clang/lib/Sema/SemaExprMember.cpp | |
parent | f7096428b4b0f8e9dd6ac1292eda385152de9ae5 (diff) | |
download | llvm-c8536760612785e8ee97a5261c20d22c6712b4b2.zip llvm-c8536760612785e8ee97a5261c20d22c6712b4b2.tar.gz llvm-c8536760612785e8ee97a5261c20d22c6712b4b2.tar.bz2 |
[Clang] Fix a crash when incorrectly calling an explicit object member function template (#75913)
Fixes #75732
Diffstat (limited to 'clang/lib/Sema/SemaExprMember.cpp')
-rw-r--r-- | clang/lib/Sema/SemaExprMember.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaExprMember.cpp b/clang/lib/Sema/SemaExprMember.cpp index 473eea5..2abec3d 100644 --- a/clang/lib/Sema/SemaExprMember.cpp +++ b/clang/lib/Sema/SemaExprMember.cpp @@ -253,7 +253,9 @@ static void diagnoseInstanceReference(Sema &SemaRef, SemaRef.Diag(Loc, diag::err_member_call_without_object) << Range << /*static*/ 0; else { - const auto *Callee = dyn_cast<CXXMethodDecl>(Rep); + if (const auto *Tpl = dyn_cast<FunctionTemplateDecl>(Rep)) + Rep = Tpl->getTemplatedDecl(); + const auto *Callee = cast<CXXMethodDecl>(Rep); auto Diag = SemaRef.Diag(Loc, diag::err_member_call_without_object) << Range << Callee->isExplicitObjectMemberFunction(); if (!Replacement.empty()) |