13f7c7f48654230d8e379214cfe49fcf2fde0a2c6Douglas Gregorenum Color { 23f7c7f48654230d8e379214cfe49fcf2fde0a2c6Douglas Gregor Red, Green, Blue 33f7c7f48654230d8e379214cfe49fcf2fde0a2c6Douglas Gregor}; 43f7c7f48654230d8e379214cfe49fcf2fde0a2c6Douglas Gregor 53f7c7f48654230d8e379214cfe49fcf2fde0a2c6Douglas Gregorstruct Point { 63f7c7f48654230d8e379214cfe49fcf2fde0a2c6Douglas Gregor float x, y, z; 73f7c7f48654230d8e379214cfe49fcf2fde0a2c6Douglas Gregor enum Color color; 83f7c7f48654230d8e379214cfe49fcf2fde0a2c6Douglas Gregor}; 93f7c7f48654230d8e379214cfe49fcf2fde0a2c6Douglas Gregor 103f7c7f48654230d8e379214cfe49fcf2fde0a2c6Douglas Gregorvoid test(struct Point *p) { 1188a35862fbe473f2a4f0c19f24dbe536937e1dc6Douglas Gregor // RUN: %clang_cc1 -include %S/Inputs/macros.h -fsyntax-only -code-completion-macros -code-completion-at=%s:12:14 %s -o - | FileCheck -check-prefix=CC1 %s 123f7c7f48654230d8e379214cfe49fcf2fde0a2c6Douglas Gregor switch (p->IDENTITY(color)) { 1388a35862fbe473f2a4f0c19f24dbe536937e1dc6Douglas Gregor // RUN: %clang_cc1 -include %S/Inputs/macros.h -fsyntax-only -code-completion-macros -code-completion-at=%s:14:9 %s -o - | FileCheck -check-prefix=CC2 %s 143f7c7f48654230d8e379214cfe49fcf2fde0a2c6Douglas Gregor case 153f7c7f48654230d8e379214cfe49fcf2fde0a2c6Douglas Gregor } 164d7e0ced7f16a04aabe2d8d91cbbb52fb1162810Alexander Kornienko // RUN: %clang_cc1 -include %S/Inputs/macros.h -fsyntax-only -code-completion-macros -code-completion-at=%s:17:7 %s -o - | FileCheck -check-prefix=CC3 %s 174d7e0ced7f16a04aabe2d8d91cbbb52fb1162810Alexander Kornienko#ifdef Q 184d7e0ced7f16a04aabe2d8d91cbbb52fb1162810Alexander Kornienko#endif 1988a35862fbe473f2a4f0c19f24dbe536937e1dc6Douglas Gregor 2088a35862fbe473f2a4f0c19f24dbe536937e1dc6Douglas Gregor // Run the same tests, this time with macros loaded from the PCH file. 2188a35862fbe473f2a4f0c19f24dbe536937e1dc6Douglas Gregor // RUN: %clang_cc1 -emit-pch -o %t %S/Inputs/macros.h 2288a35862fbe473f2a4f0c19f24dbe536937e1dc6Douglas Gregor // RUN: %clang_cc1 -include-pch %t -fsyntax-only -code-completion-macros -code-completion-at=%s:12:14 %s -o - | FileCheck -check-prefix=CC1 %s 2388a35862fbe473f2a4f0c19f24dbe536937e1dc6Douglas Gregor // RUN: %clang_cc1 -include-pch %t -fsyntax-only -code-completion-macros -code-completion-at=%s:14:9 %s -o - | FileCheck -check-prefix=CC2 %s 244d7e0ced7f16a04aabe2d8d91cbbb52fb1162810Alexander Kornienko // RUN: %clang_cc1 -include-pch %t -fsyntax-only -code-completion-macros -code-completion-at=%s:17:7 %s -o - | FileCheck -check-prefix=CC3 %s 2588a35862fbe473f2a4f0c19f24dbe536937e1dc6Douglas Gregor 26ab0b4f1d66de54b4c3102b96d56964510361ba7dDouglas Gregor // CC1: color 27ab0b4f1d66de54b4c3102b96d56964510361ba7dDouglas Gregor // CC1: x 28ab0b4f1d66de54b4c3102b96d56964510361ba7dDouglas Gregor // CC1: y 29ab0b4f1d66de54b4c3102b96d56964510361ba7dDouglas Gregor // CC1: z 30ab0b4f1d66de54b4c3102b96d56964510361ba7dDouglas Gregor 313f7c7f48654230d8e379214cfe49fcf2fde0a2c6Douglas Gregor // CC2: BAR(<#X#>, <#Y#>) 32ab0b4f1d66de54b4c3102b96d56964510361ba7dDouglas Gregor // CC2: Blue 333f7c7f48654230d8e379214cfe49fcf2fde0a2c6Douglas Gregor // CC2: FOO 34ab0b4f1d66de54b4c3102b96d56964510361ba7dDouglas Gregor // CC2: Green 353f7c7f48654230d8e379214cfe49fcf2fde0a2c6Douglas Gregor // CC2: IDENTITY(<#X#>) 364d7e0ced7f16a04aabe2d8d91cbbb52fb1162810Alexander Kornienko // CC2: MACRO_WITH_HISTORY(<#X#>, <#Y#>) 37ab0b4f1d66de54b4c3102b96d56964510361ba7dDouglas Gregor // CC2: Red 383f7c7f48654230d8e379214cfe49fcf2fde0a2c6Douglas Gregor // CC2: WIBBLE 394d7e0ced7f16a04aabe2d8d91cbbb52fb1162810Alexander Kornienko 404d7e0ced7f16a04aabe2d8d91cbbb52fb1162810Alexander Kornienko // CC3: BAR 414d7e0ced7f16a04aabe2d8d91cbbb52fb1162810Alexander Kornienko // CC3: DEAD_MACRO 424d7e0ced7f16a04aabe2d8d91cbbb52fb1162810Alexander Kornienko // CC3: FOO 434d7e0ced7f16a04aabe2d8d91cbbb52fb1162810Alexander Kornienko // CC3: IDENTITY 444d7e0ced7f16a04aabe2d8d91cbbb52fb1162810Alexander Kornienko // CC3: MACRO_WITH_HISTORY 454d7e0ced7f16a04aabe2d8d91cbbb52fb1162810Alexander Kornienko // CC3: WIBBLE 463f7c7f48654230d8e379214cfe49fcf2fde0a2c6Douglas Gregor} 47