diff options
author | Davide Italiano <davide@freebsd.org> | 2015-07-22 00:30:58 +0000 |
---|---|---|
committer | Davide Italiano <davide@freebsd.org> | 2015-07-22 00:30:58 +0000 |
commit | f179e36e0e2c0ca8a28815c95758c3e44ad08fc6 (patch) | |
tree | 171b6056c6ba82d143307266f0e81395229107fa /clang/lib/Sema/SemaExprMember.cpp | |
parent | e171da5cb781dfaa06f8637b35c06f93e8bb5604 (diff) | |
download | bcm5719-llvm-f179e36e0e2c0ca8a28815c95758c3e44ad08fc6.tar.gz bcm5719-llvm-f179e36e0e2c0ca8a28815c95758c3e44ad08fc6.zip |
[Sema] Diagnose use of declaration correctly.
Before we skipped that for virtual functions not fully qualified (r81507).
This commit basically reverts this to the older behaviour, which seems
more consistent. We now also correctly consider ill-formed calls to deleted
member functions, which were silently passed before in some cases.
The review contains the whole discussion.
PR: 20268
Differential Revision: http://reviews.llvm.org/D11334
llvm-svn: 242857
Diffstat (limited to 'clang/lib/Sema/SemaExprMember.cpp')
-rw-r--r-- | clang/lib/Sema/SemaExprMember.cpp | 10 |
1 files changed, 1 insertions, 9 deletions
diff --git a/clang/lib/Sema/SemaExprMember.cpp b/clang/lib/Sema/SemaExprMember.cpp index a9f1919e18a..94716b4a71e 100644 --- a/clang/lib/Sema/SemaExprMember.cpp +++ b/clang/lib/Sema/SemaExprMember.cpp @@ -1042,16 +1042,8 @@ Sema::BuildMemberReferenceExpr(Expr *BaseExpr, QualType BaseExprType, BaseExpr = new (Context) CXXThisExpr(Loc, BaseExprType,/*isImplicit=*/true); } - bool ShouldCheckUse = true; - if (CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(MemberDecl)) { - // Don't diagnose the use of a virtual member function unless it's - // explicitly qualified. - if (MD->isVirtual() && !SS.isSet()) - ShouldCheckUse = false; - } - // Check the use of this member. - if (ShouldCheckUse && DiagnoseUseOfDecl(MemberDecl, MemberLoc)) + if (DiagnoseUseOfDecl(MemberDecl, MemberLoc)) return ExprError(); if (FieldDecl *FD = dyn_cast<FieldDecl>(MemberDecl)) |