From 777b9c4ae57fc5275d9c8481e6957104abd539c2 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Tue, 24 Feb 2015 21:44:43 +0000 Subject: [PATCH] PR22673 again: diagnose use of the used decl, not the found decl. This is also wrong (DiagnoseUseOfDecl should take both), but it's more consistent with what we do in other places. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@230384 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Sema/SemaExprCXX.cpp | 4 ++-- test/SemaCXX/deleted-function.cpp | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/Sema/SemaExprCXX.cpp b/lib/Sema/SemaExprCXX.cpp index 7a76f6ae76..0a6b0c8545 100644 --- a/lib/Sema/SemaExprCXX.cpp +++ b/lib/Sema/SemaExprCXX.cpp @@ -2591,7 +2591,7 @@ static ExprResult BuildCXXCastArgument(Sema &S, S.CheckConstructorAccess(CastLoc, Constructor, InitializedEntity::InitializeTemporary(Ty), Constructor->getAccess()); - if (S.DiagnoseUseOfDecl(FoundDecl, CastLoc)) + if (S.DiagnoseUseOfDecl(Method, CastLoc)) return ExprError(); ExprResult Result = S.BuildCXXConstructExpr( @@ -2609,7 +2609,7 @@ static ExprResult BuildCXXCastArgument(Sema &S, assert(!From->getType()->isPointerType() && "Arg can't have pointer type!"); S.CheckMemberOperatorAccess(CastLoc, From, /*arg*/ nullptr, FoundDecl); - if (S.DiagnoseUseOfDecl(FoundDecl, CastLoc)) + if (S.DiagnoseUseOfDecl(Method, CastLoc)) return ExprError(); // Create an implicit call expr that calls it. diff --git a/test/SemaCXX/deleted-function.cpp b/test/SemaCXX/deleted-function.cpp index eab1f34692..bd6fc09eeb 100644 --- a/test/SemaCXX/deleted-function.cpp +++ b/test/SemaCXX/deleted-function.cpp @@ -87,3 +87,9 @@ int dc12 = use_dc({0}); // expected-error {{deleted}} int use_dcr(const DelCtor &); // expected-note {{here}} int dc13 = use_dcr(0); // expected-error {{deleted}} int dc14 = use_dcr({0}); // expected-error {{deleted}} + +struct DelCtorTemplate { + template DelCtorTemplate(T) = delete; // expected-note {{deleted}} +}; +int use_dct(const DelCtorTemplate &); +int dc15 = use_dct(0); // expected-error {{deleted}} -- 2.40.0