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 | c70fca60dab47f51d1156d5c76bfee865d8f8d70 (patch) | |
tree | 6bc91eba963e356455bc27c842aae5bef61b5f8e /clang/lib/Sema/SemaDecl.cpp | |
parent | 8647ffcda5dbf0399494a668e9a181180957ede4 (diff) | |
download | bcm5719-llvm-c70fca60dab47f51d1156d5c76bfee865d8f8d70.tar.gz bcm5719-llvm-c70fca60dab47f51d1156d5c76bfee865d8f8d70.zip |
Complain about attempts to befriend declarations via a using
declaration. Patch by Stephen Lin!
llvm-svn: 178698
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index a6ba68060df..12885684016 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/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); |