forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			123 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
	
| class X {
 | |
| public:
 | |
|  int pub;
 | |
| protected:
 | |
|  int prot;
 | |
| private:
 | |
|  int priv;
 | |
| };
 | |
| 
 | |
| class Unrelated {
 | |
| public:
 | |
|   static int pub;
 | |
| protected:
 | |
|   static int prot;
 | |
| private:
 | |
|   static int priv;
 | |
| };
 | |
| 
 | |
| class Y : public X {
 | |
|   int test() {
 | |
|     this->pub = 10;
 | |
|     // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:21:11 %s -o - \
 | |
|     // RUN: | FileCheck -check-prefix=THIS %s
 | |
|     // THIS: priv (InBase,Inaccessible)
 | |
|     // THIS: prot (InBase)
 | |
|     // THIS: pub (InBase)
 | |
|     //
 | |
|     // Also check implicit 'this->', i.e. complete at the start of the line.
 | |
|     // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:21:1 %s -o - \
 | |
|     // RUN: | FileCheck -check-prefix=THIS %s
 | |
| 
 | |
|     X().pub + 10;
 | |
|     // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:32:9 %s -o - \
 | |
|     // RUN: | FileCheck -check-prefix=X-OBJ %s
 | |
|     // X-OBJ: priv (Inaccessible)
 | |
|     // X-OBJ: prot (Inaccessible)
 | |
|     // X-OBJ: pub : [#int#]pub
 | |
|     
 | |
|     Y().pub + 10;
 | |
|     // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:39:9 %s -o - \
 | |
|     // RUN: | FileCheck -check-prefix=Y-OBJ %s
 | |
|     // Y-OBJ: priv (InBase,Inaccessible)
 | |
|     // Y-OBJ: prot (InBase)
 | |
|     // Y-OBJ: pub (InBase)
 | |
| 
 | |
|     this->X::pub = 10;
 | |
|     X::pub = 10;
 | |
|     // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:46:14 %s -o - \
 | |
|     // RUN: | FileCheck -check-prefix=THIS-BASE %s
 | |
|     //
 | |
|     // THIS-BASE: priv (Inaccessible)
 | |
|     // THIS-BASE: prot : [#int#]prot
 | |
|     // THIS-BASE: pub : [#int#]pub
 | |
|     //
 | |
|     // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:47:8 %s -o - \
 | |
|     // RUN: | FileCheck -check-prefix=THIS-BASE %s
 | |
|     
 | |
| 
 | |
|     this->Unrelated::pub = 10; // a check we don't crash in this cases.
 | |
|     Y().Unrelated::pub = 10; // a check we don't crash in this cases.
 | |
|     Unrelated::pub = 10;
 | |
|     // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:59:22 %s -o - \
 | |
|     // RUN: | FileCheck -check-prefix=UNRELATED %s
 | |
|     // UNRELATED: priv (Inaccessible)
 | |
|     // UNRELATED: prot (Inaccessible)
 | |
|     // UNRELATED: pub : [#int#]pub
 | |
|     //
 | |
|     // RUN: not %clang_cc1 -fsyntax-only -code-completion-at=%s:60:20 %s -o - \
 | |
|     // RUN: | FileCheck -check-prefix=UNRELATED %s
 | |
|     // RUN: not %clang_cc1 -fsyntax-only -code-completion-at=%s:61:16 %s -o - \
 | |
|     // RUN: | FileCheck -check-prefix=UNRELATED %s
 | |
|   }
 | |
| };
 | |
| 
 | |
| class Outer {
 | |
|  public:
 | |
|   static int pub;
 | |
|  protected:
 | |
|   static int prot;
 | |
|  private:
 | |
|   static int priv;
 | |
| 
 | |
|   class Inner {
 | |
|     int test() {
 | |
|       Outer::pub = 10;
 | |
|     // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:85:14 %s -o - \
 | |
|     // RUN: | FileCheck -check-prefix=OUTER %s
 | |
|     // OUTER: priv : [#int#]priv
 | |
|     // OUTER: prot : [#int#]prot
 | |
|     // OUTER: pub : [#int#]pub
 | |
| 
 | |
|     // Also check the unqualified case.
 | |
|     // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:85:1 %s -o - \
 | |
|     // RUN: | FileCheck -check-prefix=OUTER %s
 | |
|     }
 | |
|   };
 | |
| };
 | |
| 
 | |
| class Base {
 | |
| public:
 | |
|   int pub;
 | |
| };
 | |
| 
 | |
| class Accessible : public Base {
 | |
| };
 | |
| 
 | |
| class Inaccessible : private Base {
 | |
| };
 | |
| 
 | |
| class Test : public Accessible, public Inaccessible {
 | |
|   int test() {
 | |
|     this->Accessible::pub = 10;
 | |
|     // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:112:23 %s -o - \
 | |
|     // RUN: | FileCheck -check-prefix=ACCESSIBLE %s
 | |
|     // ACCESSIBLE: pub (InBase)
 | |
| 
 | |
|     this->Inaccessible::pub = 10;
 | |
|     // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:117:25 %s -o - \
 | |
|     // RUN: | FileCheck -check-prefix=INACCESSIBLE %s
 | |
|     // INACCESSIBLE: pub (InBase,Inaccessible)
 | |
|   }
 | |
| };
 |