macros.c 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. enum Color {
  2. Red, Green, Blue
  3. };
  4. struct Point {
  5. float x, y, z;
  6. enum Color color;
  7. };
  8. void test(struct Point *p) {
  9. // 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
  10. switch (p->IDENTITY(color)) {
  11. // 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
  12. case
  13. }
  14. // 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
  15. #ifdef Q
  16. #endif
  17. // Run the same tests, this time with macros loaded from the PCH file.
  18. // RUN: %clang_cc1 -emit-pch -o %t %S/Inputs/macros.h
  19. // RUN: %clang_cc1 -include-pch %t -fsyntax-only -code-completion-macros -code-completion-at=%s:12:14 %s -o - | FileCheck -check-prefix=CC1 %s
  20. // RUN: %clang_cc1 -include-pch %t -fsyntax-only -code-completion-macros -code-completion-at=%s:14:9 %s -o - | FileCheck -check-prefix=CC2 %s
  21. // RUN: %clang_cc1 -include-pch %t -fsyntax-only -code-completion-macros -code-completion-at=%s:17:7 %s -o - | FileCheck -check-prefix=CC3 %s
  22. // CC1: color
  23. // CC1: x
  24. // CC1: y
  25. // CC1: z
  26. // CC2: BAR(<#X#>, <#Y#>)
  27. // CC2: Blue
  28. // CC2: FOO
  29. // CC2: Green
  30. // CC2: IDENTITY(<#X#>)
  31. // CC2: MACRO_WITH_HISTORY(<#X#>, <#Y#>)
  32. // CC2: Red
  33. // CC2: WIBBLE
  34. // CC3: BAR
  35. // CC3: DEAD_MACRO
  36. // CC3: FOO
  37. // CC3: IDENTITY
  38. // CC3: MACRO_WITH_HISTORY
  39. // CC3: WIBBLE
  40. }