10c010cddSFrancisco Lopes da Silva // Note: the run lines follow their respective tests, since line/column
20c010cddSFrancisco Lopes da Silva // matter in this test.
30c010cddSFrancisco Lopes da Silva 
40c010cddSFrancisco Lopes da Silva void foo(int a = 42, int = 42);
50c010cddSFrancisco Lopes da Silva void bar(int a, int b = 42, int c = 42);
60c010cddSFrancisco Lopes da Silva void baz(int a = 42, ...);
SS70c010cddSFrancisco Lopes da Silva struct S{ S(int a = 42, int = 42) {} };
80c010cddSFrancisco Lopes da Silva 
Bar1()9*11338c59SErik Verbruggen class Bar1 { public: Bar1() {} }; class Bar2;
10*11338c59SErik Verbruggen void foo_2(Bar1 b1 = Bar1(), Bar2 b2 = Bar2());
11*11338c59SErik Verbruggen 
main()120c010cddSFrancisco Lopes da Silva int main() {
130c010cddSFrancisco Lopes da Silva     foo(42, 42);
140c010cddSFrancisco Lopes da Silva     bar(42, 42, 42);
150c010cddSFrancisco Lopes da Silva     baz(42, 42, 42);
160c010cddSFrancisco Lopes da Silva     S s(42, 42);
17*11338c59SErik Verbruggen     foo_2();
180c010cddSFrancisco Lopes da Silva }
190c010cddSFrancisco Lopes da Silva 
20*11338c59SErik Verbruggen // RUN: c-index-test -code-completion-at=%s:13:9 %s | FileCheck -check-prefix=CHECK-CC1 %s
21*11338c59SErik Verbruggen // CHECK-CC1: OverloadCandidate:{ResultType void}{Text foo}{LeftParen (}{Optional {CurrentParameter int a = 42}{Optional {Comma , }{Placeholder int = 42}}}{RightParen )} (1)
220c010cddSFrancisco Lopes da Silva // CHECK-CC1: Completion contexts:
230c010cddSFrancisco Lopes da Silva // CHECK-CC1-NEXT: Any type
240c010cddSFrancisco Lopes da Silva // CHECK-CC1-NEXT: Any value
250c010cddSFrancisco Lopes da Silva // CHECK-CC1-NEXT: Enum tag
260c010cddSFrancisco Lopes da Silva // CHECK-CC1-NEXT: Union tag
270c010cddSFrancisco Lopes da Silva // CHECK-CC1-NEXT: Struct tag
280c010cddSFrancisco Lopes da Silva // CHECK-CC1-NEXT: Class name
290c010cddSFrancisco Lopes da Silva // CHECK-CC1-NEXT: Nested name specifier
300c010cddSFrancisco Lopes da Silva // CHECK-CC1-NEXT: Objective-C interface
310c010cddSFrancisco Lopes da Silva 
32*11338c59SErik Verbruggen // RUN: c-index-test -code-completion-at=%s:14:9 %s | FileCheck -check-prefix=CHECK-CC2 %s
33*11338c59SErik Verbruggen // CHECK-CC2: OverloadCandidate:{ResultType void}{Text bar}{LeftParen (}{CurrentParameter int a}{Optional {Comma , }{Placeholder int b = 42}{Optional {Comma , }{Placeholder int c = 42}}}{RightParen )} (1)
340c010cddSFrancisco Lopes da Silva // CHECK-CC2: Completion contexts:
350c010cddSFrancisco Lopes da Silva // CHECK-CC2-NEXT: Any type
360c010cddSFrancisco Lopes da Silva // CHECK-CC2-NEXT: Any value
370c010cddSFrancisco Lopes da Silva // CHECK-CC2-NEXT: Enum tag
380c010cddSFrancisco Lopes da Silva // CHECK-CC2-NEXT: Union tag
390c010cddSFrancisco Lopes da Silva // CHECK-CC2-NEXT: Struct tag
400c010cddSFrancisco Lopes da Silva // CHECK-CC2-NEXT: Class name
410c010cddSFrancisco Lopes da Silva // CHECK-CC2-NEXT: Nested name specifier
420c010cddSFrancisco Lopes da Silva // CHECK-CC2-NEXT: Objective-C interface
430c010cddSFrancisco Lopes da Silva 
44*11338c59SErik Verbruggen // RUN: c-index-test -code-completion-at=%s:14:16 %s | FileCheck -check-prefix=CHECK-CC3 %s
45*11338c59SErik Verbruggen // CHECK-CC3: OverloadCandidate:{ResultType void}{Text bar}{LeftParen (}{Placeholder int a}{Optional {Comma , }{Placeholder int b = 42}{Optional {Comma , }{CurrentParameter int c = 42}}}{RightParen )} (1)
460c010cddSFrancisco Lopes da Silva // CHECK-CC3: Completion contexts:
470c010cddSFrancisco Lopes da Silva // CHECK-CC3-NEXT: Any type
480c010cddSFrancisco Lopes da Silva // CHECK-CC3-NEXT: Any value
490c010cddSFrancisco Lopes da Silva // CHECK-CC3-NEXT: Enum tag
500c010cddSFrancisco Lopes da Silva // CHECK-CC3-NEXT: Union tag
510c010cddSFrancisco Lopes da Silva // CHECK-CC3-NEXT: Struct tag
520c010cddSFrancisco Lopes da Silva // CHECK-CC3-NEXT: Class name
530c010cddSFrancisco Lopes da Silva // CHECK-CC3-NEXT: Nested name specifier
540c010cddSFrancisco Lopes da Silva // CHECK-CC3-NEXT: Objective-C interface
550c010cddSFrancisco Lopes da Silva 
56*11338c59SErik Verbruggen // RUN: c-index-test -code-completion-at=%s:15:16 %s | FileCheck -check-prefix=CHECK-CC4 %s
57*11338c59SErik Verbruggen // CHECK-CC4: OverloadCandidate:{ResultType void}{Text baz}{LeftParen (}{Optional {Placeholder int a = 42}{Optional {Comma , }{CurrentParameter ...}}}{RightParen )} (1)
580c010cddSFrancisco Lopes da Silva // CHECK-CC4: Completion contexts:
590c010cddSFrancisco Lopes da Silva // CHECK-CC4-NEXT: Any type
600c010cddSFrancisco Lopes da Silva // CHECK-CC4-NEXT: Any value
610c010cddSFrancisco Lopes da Silva // CHECK-CC4-NEXT: Enum tag
620c010cddSFrancisco Lopes da Silva // CHECK-CC4-NEXT: Union tag
630c010cddSFrancisco Lopes da Silva // CHECK-CC4-NEXT: Struct tag
640c010cddSFrancisco Lopes da Silva // CHECK-CC4-NEXT: Class name
650c010cddSFrancisco Lopes da Silva // CHECK-CC4-NEXT: Nested name specifier
660c010cddSFrancisco Lopes da Silva // CHECK-CC4-NEXT: Objective-C interface
670c010cddSFrancisco Lopes da Silva 
68*11338c59SErik Verbruggen // RUN: c-index-test -code-completion-at=%s:16:9 %s | FileCheck -check-prefix=CHECK-CC5 %s
69*11338c59SErik Verbruggen // CHECK-CC5: OverloadCandidate:{Text S}{LeftParen (}{Optional {CurrentParameter int a = 42}{Optional {Comma , }{Placeholder int = 42}}}{RightParen )} (1)
700c010cddSFrancisco Lopes da Silva // CHECK-CC5: OverloadCandidate:{Text S}{LeftParen (}{CurrentParameter const S &}{RightParen )} (1)
710c010cddSFrancisco Lopes da Silva // CHECK-CC5: Completion contexts:
720c010cddSFrancisco Lopes da Silva // CHECK-CC5-NEXT: Any type
730c010cddSFrancisco Lopes da Silva // CHECK-CC5-NEXT: Any value
740c010cddSFrancisco Lopes da Silva // CHECK-CC5-NEXT: Enum tag
750c010cddSFrancisco Lopes da Silva // CHECK-CC5-NEXT: Union tag
760c010cddSFrancisco Lopes da Silva // CHECK-CC5-NEXT: Struct tag
770c010cddSFrancisco Lopes da Silva // CHECK-CC5-NEXT: Class name
780c010cddSFrancisco Lopes da Silva // CHECK-CC5-NEXT: Nested name specifier
790c010cddSFrancisco Lopes da Silva // CHECK-CC5-NEXT: Objective-C interface
80*11338c59SErik Verbruggen 
81*11338c59SErik Verbruggen // RUN: c-index-test -code-completion-at=%s:17:11 %s | FileCheck -check-prefix=CHECK-CC6 %s
82*11338c59SErik Verbruggen // CHECK-CC6: FunctionDecl:{ResultType void}{TypedText foo_2}{LeftParen (}{Optional {Placeholder Bar1 b1 = Bar1()}{Optional {Comma , }{Placeholder Bar2 b2}}}{RightParen )} (50)
83*11338c59SErik Verbruggen // CHECK-CC6: Completion contexts:
84*11338c59SErik Verbruggen // CHECK-CC6-NEXT: Any type
85*11338c59SErik Verbruggen // CHECK-CC6-NEXT: Any value
86*11338c59SErik Verbruggen // CHECK-CC6-NEXT: Enum tag
87*11338c59SErik Verbruggen // CHECK-CC6-NEXT: Union tag
88*11338c59SErik Verbruggen // CHECK-CC6-NEXT: Struct tag
89*11338c59SErik Verbruggen // CHECK-CC6-NEXT: Class name
90*11338c59SErik Verbruggen // CHECK-CC6-NEXT: Nested name specifier
91*11338c59SErik Verbruggen // CHECK-CC6-NEXT: Objective-C interface
92