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