aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Sema/SemaExprMember.cpp
diff options
context:
space:
mode:
authorcor3ntin <corentinjabot@gmail.com>2023-12-20 07:41:24 +0100
committerGitHub <noreply@github.com>2023-12-20 07:41:24 +0100
commitc8536760612785e8ee97a5261c20d22c6712b4b2 (patch)
tree4cba9be524eb869a50f7eb2acc0ccbdb70ca6a82 /clang/lib/Sema/SemaExprMember.cpp
parentf7096428b4b0f8e9dd6ac1292eda385152de9ae5 (diff)
downloadllvm-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.cpp4
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())