#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 }