blob: 250798470cb673f5e5fb8ee6728047e186c7d2bd [file] [log] [blame]
Argyrios Kyrtzidis5c5f03e2011-08-18 19:41:28 +00001struct Point {
2 float x;
3 float y;
4 float z;
5};
6
7#define MACRO2(x) x
8#define MACRO(x) MACRO2(x)
9
10void test(struct Point *p) {
11 p->x;
12 MACRO(p->x);
13}
14
Argyrios Kyrtzidisf1e5b152012-12-21 01:51:12 +000015#define MACRO3(x,y,z) x;y;z
Argyrios Kyrtzidiscd0fd182012-12-21 01:17:20 +000016
Argyrios Kyrtzidisbb06b502012-12-22 04:48:10 +000017void test2(struct Point *p) {
Argyrios Kyrtzidiscd0fd182012-12-21 01:17:20 +000018 MACRO3(p->x);
19 MACRO3(p->x
20}
21
Argyrios Kyrtzidisfdf57062013-02-22 22:28:58 +000022#define FM(x) x
23void test3(struct Point *p) {
24 FM(p->x, a);
25}
26
Argyrios Kyrtzidisbb06b502012-12-22 04:48:10 +000027#define VGM(...) 0
28#define VGM2(...) __VA_ARGS__
29
30// These need to be last, to test proper handling of EOF.
31#ifdef EOF_TEST1
32void test3(struct Point *p) {
33 VGM(1,2, p->x
34
35#elif EOF_TEST2
36void test3(struct Point *p) {
37 VGM2(VGM(1,2, p->x
38
39#endif
40
Argyrios Kyrtzidis5c5f03e2011-08-18 19:41:28 +000041// RUN: c-index-test -code-completion-at=%s:11:12 %s | FileCheck %s
42// RUN: c-index-test -code-completion-at=%s:12:12 %s | FileCheck %s
Argyrios Kyrtzidiscd0fd182012-12-21 01:17:20 +000043// RUN: c-index-test -code-completion-at=%s:18:13 %s | FileCheck %s
44// RUN: c-index-test -code-completion-at=%s:19:13 %s | FileCheck %s
Argyrios Kyrtzidisfdf57062013-02-22 22:28:58 +000045// RUN: c-index-test -code-completion-at=%s:24:9 %s | FileCheck %s
Argyrios Kyrtzidis5c5f03e2011-08-18 19:41:28 +000046// CHECK: FieldDecl:{ResultType float}{TypedText x} (35)
47// CHECK-NEXT: FieldDecl:{ResultType float}{TypedText y} (35)
48// CHECK-NEXT: FieldDecl:{ResultType float}{TypedText z} (35)
49// CHECK-NEXT: Completion contexts:
50// CHECK-NEXT: Arrow member access
51// CHECK-NEXT: Container Kind: StructDecl
Argyrios Kyrtzidisbb06b502012-12-22 04:48:10 +000052
53// With these, code-completion is unknown because the macro argument (and the
54// completion point) is not expanded by the macro definition.
Argyrios Kyrtzidisfdf57062013-02-22 22:28:58 +000055// RUN: c-index-test -code-completion-at=%s:33:15 %s -DEOF_TEST1 | FileCheck %s -check-prefix=CHECK-EOF
56// RUN: c-index-test -code-completion-at=%s:37:20 %s -DEOF_TEST2 | FileCheck %s -check-prefix=CHECK-EOF
Argyrios Kyrtzidisbb06b502012-12-22 04:48:10 +000057// CHECK-EOF: Completion contexts:
58// CHECK-EOF: Unknown