Sending to mailing list.

From: Dixon Ryan (ETAS/ERS-PD2)
Sent: 21 March 2017 14:18
To: 'Alex L' <arpha...@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:arpha...@gmail.com]
Sent: 21 March 2017 12:17
To: Dixon Ryan (ETAS/ERS-PD2) <ryan.di...@etas.com<mailto:ryan.di...@etas.com>>
Cc: cfe-commits@lists.llvm.org<mailto:cfe-commits@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@lists.llvm.org<mailto:cfe-commits@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@lists.llvm.org<mailto:cfe-commits@lists.llvm.org>
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

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#>)
   }
};
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to