1ae45d0a4SKadir Cetinkaya class A {
2ae45d0a4SKadir Cetinkaya  public:
3ae45d0a4SKadir Cetinkaya   virtual void vfunc(bool param);
4ae45d0a4SKadir Cetinkaya   virtual void vfunc(bool param, int p);
5ae45d0a4SKadir Cetinkaya   void func(bool param);
6ae45d0a4SKadir Cetinkaya };
7ae45d0a4SKadir Cetinkaya class B : public A {
8ae45d0a4SKadir Cetinkaya virtual int ttt(bool param, int x = 3) const;
9ae45d0a4SKadir Cetinkaya void vfunc(bool param, int p) override;
10ae45d0a4SKadir Cetinkaya };
11ae45d0a4SKadir Cetinkaya class C : public B {
12ae45d0a4SKadir Cetinkaya  public:
13ae45d0a4SKadir Cetinkaya   void vfunc(bool param) override;
14*cabab29aSIlya Biryukov   vf
15ae45d0a4SKadir Cetinkaya };
16ae45d0a4SKadir Cetinkaya 
17*cabab29aSIlya Biryukov // Runs completion at ^vf
18ae45d0a4SKadir Cetinkaya // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:14:3 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s
19ae45d0a4SKadir Cetinkaya // CHECK-CC1: COMPLETION: Pattern : int ttt(bool param, int x = 3) const override{{$}}
20ae45d0a4SKadir Cetinkaya // CHECK-CC1: COMPLETION: Pattern : void vfunc(bool param, int p) override{{$}}
21ae45d0a4SKadir Cetinkaya // CHECK-CC1-NOT: COMPLETION: Pattern : void vfunc(bool param) override{{$}}
22ae45d0a4SKadir Cetinkaya //
23*cabab29aSIlya Biryukov // Runs completion at vf^
24ae45d0a4SKadir Cetinkaya // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:14:5 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s
25ae45d0a4SKadir Cetinkaya // CHECK-CC2-NOT: COMPLETION: Pattern : int ttt(bool param, int x = 3) const override{{$}}
26*cabab29aSIlya Biryukov // CHECK-CC2: COMPLETION: Pattern : void vfunc(bool param, int p) override{{$}}
27ae45d0a4SKadir Cetinkaya // CHECK-CC2-NOT: COMPLETION: Pattern : void vfunc(bool param) override{{$}}
28ae45d0a4SKadir Cetinkaya //
29*cabab29aSIlya Biryukov // Runs completion at void ^ on line 13.
30*cabab29aSIlya Biryukov // RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:13:8 %s -o - | FileCheck -check-prefix=CHECK-CC3 %s
31ae45d0a4SKadir Cetinkaya // CHECK-CC3-NOT: COMPLETION: Pattern : int ttt(bool param, int x = 3) const override{{$}}
32ae45d0a4SKadir Cetinkaya // CHECK-CC3-NOT: COMPLETION: Pattern : void vfunc(bool param, int p) override{{$}}
33ae45d0a4SKadir Cetinkaya // CHECK-CC3-NOT: COMPLETION: Pattern : void vfunc(bool param) override{{$}}
34