summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-02-24 21:44:43 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-02-24 21:44:43 +0000
commit7c9442a6aefe268a7714d9ad7a94d6e15d6418f0 (patch)
tree693cf16ac6b45327c50caf6727069d3e062d5f93
parent2ce48056a4fada8a810bcefe09888e0e883ca878 (diff)
downloadbcm5719-llvm-7c9442a6aefe268a7714d9ad7a94d6e15d6418f0.tar.gz
bcm5719-llvm-7c9442a6aefe268a7714d9ad7a94d6e15d6418f0.zip
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. llvm-svn: 230384
-rw-r--r--clang/lib/Sema/SemaExprCXX.cpp4
-rw-r--r--clang/test/SemaCXX/deleted-function.cpp6
2 files changed, 8 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp
index 7a76f6ae765..0a6b0c85458 100644
--- a/clang/lib/Sema/SemaExprCXX.cpp
+++ b/clang/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/clang/test/SemaCXX/deleted-function.cpp b/clang/test/SemaCXX/deleted-function.cpp
index eab1f34692a..bd6fc09eeb7 100644
--- a/clang/test/SemaCXX/deleted-function.cpp
+++ b/clang/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<typename T> DelCtorTemplate(T) = delete; // expected-note {{deleted}}
+};
+int use_dct(const DelCtorTemplate &);
+int dc15 = use_dct(0); // expected-error {{deleted}}
OpenPOWER on IntegriCloud