[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cfe-commits
Subject:    Re: [PATCH] D11334: [Sema] Call to deleted functions are supposed to be verboten
From:       Davide Italiano <dccitaliano () gmail ! com>
Date:       2015-07-21 22:26:29
Message-ID: CADob98QS+WPHqx0EAOJt=_oG8PmYU1=thpbBbuhjMbHjyz-Skg () mail ! gmail ! com
[Download RAW message or body]

On Tue, Jul 21, 2015 at 2:59 PM, Richard Smith <richard@metafoo.co.uk> wrote:
> rsmith added inline comments.
> 
> ================
> Comment at: lib/Sema/SemaOverload.cpp:11608
> @@ +11607,3 @@
> +
> +    // Calls to deleted member functions are verboten.
> +    if (Method && Method->isDeleted())
> ----------------
> This check should happen when we build the `MemberExpr`, not when we use it. It \
> looks like the bug is in `Sema::BuildMemberReferenceExpr`, at around line 1050 of \
> SemaExprMember.cpp: 
> 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))
> return ExprError();
> 
> This is wrong: we should `DiagnoseUseOfDecl` (including diagnosing the use of a \
> deleted function) even for a virtual function. Which tests fail if we \
> unconditionally `DiagnoseUseOfDecl` here? 

Luckily only one.

FAIL: Clang :: SemaCXX/attr-deprecated.cpp (5733 of 8388)
******************** TEST 'Clang :: SemaCXX/attr-deprecated.cpp'
FAILED ********************
Script:
--
/exps/llvm2/build/./bin/clang -cc1 -internal-isystem
/exps/llvm2/build/bin/../lib/clang/3.8.0/include -nostdsysteminc
/exps/llvm2/tools/clang/test/SemaCXX/attr-deprecated.cpp -verify
-fexceptions
--
Exit Code: 1

Command Output (stderr):
--
error: 'warning' diagnostics seen but not expected:
  File /exps/llvm2/tools/clang/test/SemaCXX/attr-deprecated.cpp Line
34: 'f' is deprecated
  File /exps/llvm2/tools/clang/test/SemaCXX/attr-deprecated.cpp Line
50: 'f' is deprecated
  File /exps/llvm2/tools/clang/test/SemaCXX/attr-deprecated.cpp Line
65: 'f' is deprecated
error: 'note' diagnostics seen but not expected:
  File /exps/llvm2/tools/clang/test/SemaCXX/attr-deprecated.cpp Line
29: 'f' has been explicitly marked deprecated here
  File /exps/llvm2/tools/clang/test/SemaCXX/attr-deprecated.cpp Line
29: 'f' has been explicitly marked deprecated here
  File /exps/llvm2/tools/clang/test/SemaCXX/attr-deprecated.cpp Line
62: 'f' has been explicitly marked deprecated here
6 errors generated.

--
_______________________________________________
cfe-commits mailing list
cfe-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic