diff options
author | John McCall <rjmccall@apple.com> | 2013-04-03 21:19:47 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2013-04-03 21:19:47 +0000 |
commit | 78037ac3e7562aa3e306eaba97f1c609b86337d9 (patch) | |
tree | 55e05cfa688d5f8b70a4174b232dca5b6e18f2d5 /lib/Sema/SemaDecl.cpp | |
parent | 08291a937a149dbd036fd6ac8ab061eb8034343d (diff) |
Complain about attempts to befriend declarations via a using
declaration. Patch by Stephen Lin!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178698 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaDecl.cpp')
-rw-r--r-- | lib/Sema/SemaDecl.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index a6ba68060d..1288568401 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -2277,6 +2277,15 @@ bool Sema::MergeFunctionDecl(FunctionDecl *New, Decl *OldD, Scope *S) { Old = dyn_cast<FunctionDecl>(OldD); if (!Old) { if (UsingShadowDecl *Shadow = dyn_cast<UsingShadowDecl>(OldD)) { + if (New->getFriendObjectKind()) { + Diag(New->getLocation(), diag::err_using_decl_friend); + Diag(Shadow->getTargetDecl()->getLocation(), + diag::note_using_decl_target); + Diag(Shadow->getUsingDecl()->getLocation(), + diag::note_using_decl) << 0; + return true; + } + Diag(New->getLocation(), diag::err_using_decl_conflict_reverse); Diag(Shadow->getTargetDecl()->getLocation(), diag::note_using_decl_target); |