| #define FOO |
| #define BAR(X, Y) X, Y |
| #define IDENTITY(X) X |
| #define WIBBLE(...) |
| |
| enum Color { |
| Red, Green, Blue |
| }; |
| |
| struct Point { |
| float x, y, z; |
| enum Color color; |
| }; |
| |
| void test(struct Point *p) { |
| // RUN: clang-cc -fsyntax-only -code-completion-macros -code-completion-at=%s:17:14 %s -o - | FileCheck -check-prefix=CC1 %s |
| switch (p->IDENTITY(color)) { |
| // RUN: clang-cc -fsyntax-only -code-completion-macros -code-completion-at=%s:19:9 %s -o - | FileCheck -check-prefix=CC2 %s |
| case |
| } |
| // CC1: color |
| // CC1: x |
| // CC1: y |
| // CC1: z |
| // CC1: BAR(<#X#>, <#Y#>) |
| // CC1: FOO |
| // CC1: IDENTITY(<#X#>) |
| // CC1: WIBBLE |
| // CC2: Blue |
| // CC2: Green |
| // CC2: Red |
| // CC2: BAR(<#X#>, <#Y#>) |
| // CC2: FOO |
| // CC2: IDENTITY(<#X#>) |
| // CC2: WIBBLE |
| } |