FW: SemaAccess bug (protected members of derived)

Dixon Ryan (ETAS/ERS-PD2) via cfe-commits cfe-commits at lists.llvm.org
Tue Mar 21 07:18:42 PDT 2017


Sending to mailing list.

From: Dixon Ryan (ETAS/ERS-PD2)
Sent: 21 March 2017 14:18
To: 'Alex L' <arphaman at gmail.com>
Subject: RE: SemaAccess bug (protected members of derived)

Hello, sorry this is the first time I have done this.

The test case is attached. It should fail without the patch and then should pass with the patch.


class cl
{
public:
   void myPublic(int x){ }
protected:
   void myProtected(int y){ }
};

class clChild : public cl
{
   void myPrivate(int z)
   {
      this->
         // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:13:13 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s
         // CHECK: COMPLETION: myProtected : [#void#][#cl::#]myProtected(<#int y#>)
   }
};


From: Alex L [mailto:arphaman at gmail.com]
Sent: 21 March 2017 12:17
To: Dixon Ryan (ETAS/ERS-PD2) <Ryan.Dixon at etas.com<mailto:Ryan.Dixon at etas.com>>
Cc: cfe-commits at lists.llvm.org<mailto:cfe-commits at lists.llvm.org>
Subject: Re: SemaAccess bug (protected members of derived)

Hi,

Can you please add a suitable test-case? Clang's code-completion tests are normally in test/CodeCompletion or test/Index.

Cheers,
Alex

On 21 March 2017 at 12:05, Dixon Ryan (ETAS/ERS-PD2) via cfe-commits <cfe-commits at lists.llvm.org<mailto:cfe-commits at lists.llvm.org>> wrote:
There are a number of users of the clang static analyser back-end for intelligent code completion. Irony-Mode for emacs, for example. For a while people have been reporting an issue with not getting completions for protected members of parent classes and I believe this patch solves the bug: simply that the arguments to IsDerivedFromInclusive were the wrong way around.

URL: http://llvm.org/svn/llvm-project/cfe/trunk/lib/Sema
Relative URL: ^/cfe/trunk/lib/Sema

Index: SemaAccess.cpp
===================================================================
--- SemaAccess.cpp      (revision 297956)
+++ SemaAccess.cpp   (working copy)
@@ -823,7 +823,7 @@
         continue;
       }
-      switch (IsDerivedFromInclusive(InstanceContext, ECRecord)) {
+      switch (IsDerivedFromInclusive(ECRecord, InstanceContext)) {
       case AR_accessible: return AR_accessible;
       case AR_inaccessible: continue;
       case AR_dependent: OnFailure = AR_dependent; continue;

Thank you.

_______________________________________________
cfe-commits mailing list
cfe-commits at lists.llvm.org<mailto:cfe-commits at lists.llvm.org>
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170321/6af488d5/attachment-0001.html>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: protectedInDerived.cpp
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170321/6af488d5/attachment-0001.ksh>


More information about the cfe-commits mailing list