1d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggenstruct X { 2d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen int member1; 3d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen void func1(); 4d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggenprotected: 5d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen int member2; 6d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen void func2(); 7d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggenprivate: 8d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen int member3; 9d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen void func3(); 10d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen}; 11d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen 12d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggenstruct Y: protected X { 13d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen void doSomething(); 14d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen}; 15d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen 16d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggenclass Z { 17d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggenpublic: 18d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen int member1; 19d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen void func1(); 20d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggenprotected: 21d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen int member2; 22d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen void func2(); 23d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggenprivate: 24d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen int member3; 25d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen void func3(); 26d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen}; 27d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen 28d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggenvoid Y::doSomething() { 29d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen // RUN: c-index-test -code-completion-at=%s:30:9 %s | FileCheck -check-prefix=CHECK-SUPER-ACCESS %s 30d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen this->; 31d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen 32d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen Z that; 33d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen // RUN: c-index-test -code-completion-at=%s:34:8 %s | FileCheck -check-prefix=CHECK-ACCESS %s 34d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen that. 35d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen} 36d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen 37d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-SUPER-ACCESS: CXXMethod:{ResultType void}{TypedText doSomething}{LeftParen (}{RightParen )} (34) 38d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-SUPER-ACCESS: CXXMethod:{ResultType void}{Informative X::}{TypedText func1}{LeftParen (}{RightParen )} (36) 39d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-SUPER-ACCESS: CXXMethod:{ResultType void}{Informative X::}{TypedText func2}{LeftParen (}{RightParen )} (36) (inaccessible) 40d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-SUPER-ACCESS: CXXMethod:{ResultType void}{Informative X::}{TypedText func3}{LeftParen (}{RightParen )} (36) (inaccessible) 41d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-SUPER-ACCESS: FieldDecl:{ResultType int}{Informative X::}{TypedText member1} (37) 42d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-SUPER-ACCESS: FieldDecl:{ResultType int}{Informative X::}{TypedText member2} (37) (inaccessible) 43d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-SUPER-ACCESS: FieldDecl:{ResultType int}{Informative X::}{TypedText member3} (37) (inaccessible) 44d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-SUPER-ACCESS: CXXMethod:{ResultType Y &}{TypedText operator=}{LeftParen (}{Placeholder const Y &}{RightParen )} (34) 45d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-SUPER-ACCESS: CXXMethod:{ResultType X &}{Text X::}{TypedText operator=}{LeftParen (}{Placeholder const X &}{RightParen )} (36) 46d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-SUPER-ACCESS: StructDecl:{TypedText X}{Text ::} (77) 47d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-SUPER-ACCESS: StructDecl:{TypedText Y}{Text ::} (75) 48d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-SUPER-ACCESS: CXXDestructor:{ResultType void}{Informative X::}{TypedText ~X}{LeftParen (}{RightParen )} (36) 49d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-SUPER-ACCESS: CXXDestructor:{ResultType void}{TypedText ~Y}{LeftParen (}{RightParen )} (34) 50d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen 51d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-ACCESS: CXXMethod:{ResultType void}{TypedText func1}{LeftParen (}{RightParen )} (34) 52d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-ACCESS: CXXMethod:{ResultType void}{TypedText func2}{LeftParen (}{RightParen )} (34) (inaccessible) 53d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-ACCESS: CXXMethod:{ResultType void}{TypedText func3}{LeftParen (}{RightParen )} (34) (inaccessible) 54d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-ACCESS: FieldDecl:{ResultType int}{TypedText member1} (35) 55d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-ACCESS: FieldDecl:{ResultType int}{TypedText member2} (35) (inaccessible) 56d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-ACCESS: FieldDecl:{ResultType int}{TypedText member3} (35) (inaccessible) 57d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-ACCESS: CXXMethod:{ResultType Z &}{TypedText operator=}{LeftParen (}{Placeholder const Z &}{RightParen )} (34) 58d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-ACCESS: ClassDecl:{TypedText Z}{Text ::} (75) 59d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-ACCESS: CXXDestructor:{ResultType void}{TypedText ~Z}{LeftParen (}{RightParen )} (34) 60d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen 61d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggenclass P { 62d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggenprotected: 63d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen int member; 64d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen}; 65d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen 66d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggenclass Q : public P { 67d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggenpublic: 68d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen using P::member; 69d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen}; 70d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen 71d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggenvoid f(P x, Q y) { 72d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen // RUN: c-index-test -code-completion-at=%s:73:5 %s | FileCheck -check-prefix=CHECK-USING-INACCESSIBLE %s 73d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen x.; // member is inaccessible 74d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen // RUN: c-index-test -code-completion-at=%s:75:5 %s | FileCheck -check-prefix=CHECK-USING-ACCESSIBLE %s 75d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen y.; // member is accessible 76d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen} 77d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen 78d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-USING-INACCESSIBLE: FieldDecl:{ResultType int}{TypedText member} (35) (inaccessible) 79d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-USING-INACCESSIBLE: CXXMethod:{ResultType P &}{TypedText operator=}{LeftParen (}{Placeholder const P &}{RightParen )} (34) 80d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-USING-INACCESSIBLE: ClassDecl:{TypedText P}{Text ::} (75) 81d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-USING-INACCESSIBLE: CXXDestructor:{ResultType void}{TypedText ~P}{LeftParen (}{RightParen )} (34) 82d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen 83d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-USING-ACCESSIBLE: FieldDecl:{ResultType int}{TypedText member} (35) 84d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-USING-ACCESSIBLE: CXXMethod:{ResultType Q &}{TypedText operator=}{LeftParen (}{Placeholder const Q &}{RightParen )} (34) 85d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-USING-ACCESSIBLE: CXXMethod:{ResultType P &}{Text P::}{TypedText operator=}{LeftParen (}{Placeholder const P &}{RightParen )} (36) 86d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-USING-ACCESSIBLE: ClassDecl:{TypedText P}{Text ::} (77) 87d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-USING-ACCESSIBLE: ClassDecl:{TypedText Q}{Text ::} (75) 88d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-USING-ACCESSIBLE: CXXDestructor:{ResultType void}{Informative P::}{TypedText ~P}{LeftParen (}{RightParen )} (36) 89d12059673dcef32bc2b6bae5321654d33863afe6Erik Verbruggen// CHECK-USING-ACCESSIBLE: CXXDestructor:{ResultType void}{TypedText ~Q}{LeftParen (}{RightParen )} (34) 90