annotate-tokens-pp.c revision 4ae8f298b1ea51b4c2234f9148e2e4349c9bdd23
14ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor#define NOTHING(X,Y)
24ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor#define STILL_NOTHING NOTHING(honk,warble)
39f1e3ff3b3095967e2b92b57a53524e2d6bb141cDouglas Gregor#define BAR baz
44807231938d8aff28de09f78f301f9ba5845e5e4Douglas Gregor#define WIBBLE(X, Y) X##Y
54ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas GregorNOTHING(more,junk) float WIBBLE(int, float);
64ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregorint BAR STILL_NOTHING;
79f1e3ff3b3095967e2b92b57a53524e2d6bb141cDouglas Gregor#include "foo.h"
84ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor#undef BAR
99f1e3ff3b3095967e2b92b57a53524e2d6bb141cDouglas Gregor
104ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// RUN: c-index-test -test-annotate-tokens=%s:2:1:9:1 -I%S/Inputs %s | FileCheck %s
119f1e3ff3b3095967e2b92b57a53524e2d6bb141cDouglas Gregor// CHECK: Punctuation: "#" [2:1 - 2:2] preprocessing directive=
129f1e3ff3b3095967e2b92b57a53524e2d6bb141cDouglas Gregor// CHECK: Identifier: "define" [2:2 - 2:8] preprocessing directive=
134ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Identifier: "STILL_NOTHING" [2:9 - 2:22] preprocessing directive=
144ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Identifier: "NOTHING" [2:23 - 2:30] preprocessing directive=
154ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Punctuation: "(" [2:30 - 2:31] preprocessing directive=
164ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Identifier: "honk" [2:31 - 2:35] preprocessing directive=
174ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Punctuation: "," [2:35 - 2:36] preprocessing directive=
184ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Identifier: "warble" [2:36 - 2:42] preprocessing directive=
194ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Punctuation: ")" [2:42 - 2:43] preprocessing directive=
204ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Punctuation: "#" [3:1 - 3:2] preprocessing directive=
214ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Identifier: "define" [3:2 - 3:8] preprocessing directive=
224ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Identifier: "BAR" [3:9 - 3:12] preprocessing directive=
234ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Identifier: "baz" [3:13 - 3:16] preprocessing directive=
244ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Punctuation: "#" [4:1 - 4:2] preprocessing directive=
254ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Identifier: "define" [4:2 - 4:8] preprocessing directive=
264ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Identifier: "WIBBLE" [4:9 - 4:15] preprocessing directive=
274ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Punctuation: "(" [4:15 - 4:16] preprocessing directive=
284ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Identifier: "X" [4:16 - 4:17] preprocessing directive=
294ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Punctuation: "," [4:17 - 4:18] preprocessing directive=
304ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Identifier: "Y" [4:19 - 4:20] preprocessing directive=
314ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Punctuation: ")" [4:20 - 4:21] preprocessing directive=
324ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Identifier: "X" [4:22 - 4:23] preprocessing directive=
334ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Punctuation: "##" [4:23 - 4:25] preprocessing directive=
344ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Identifier: "Y" [4:25 - 4:26] preprocessing directive=
354ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Identifier: "NOTHING" [5:1 - 5:8] macro instantiation=NOTHING
364ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Punctuation: "(" [5:8 - 5:9]
374ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Identifier: "more" [5:9 - 5:13]
384ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Punctuation: "," [5:13 - 5:14]
394ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Identifier: "junk" [5:14 - 5:18]
404ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Punctuation: ")" [5:18 - 5:19]
414ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Keyword: "float" [5:20 - 5:25]
424ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Identifier: "WIBBLE" [5:26 - 5:32] macro instantiation=WIBBLE
434ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Punctuation: "(" [5:32 - 5:33]
444ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Keyword: "int" [5:33 - 5:36]
454ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Punctuation: "," [5:36 - 5:37]
464ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Keyword: "float" [5:38 - 5:43]
474ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Punctuation: ")" [5:43 - 5:44]
484ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Punctuation: ";" [5:44 - 5:45]
494ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Keyword: "int" [6:1 - 6:4]
504ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Identifier: "BAR" [6:5 - 6:8] macro instantiation=BAR
514ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Identifier: "STILL_NOTHING" [6:9 - 6:22] macro instantiation=STILL_NOTHING
524ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Punctuation: ";" [6:22 - 6:23]
534ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Punctuation: "#" [7:1 - 7:2] preprocessing directive=
544ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Identifier: "include" [7:2 - 7:9] preprocessing directive=
554ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Literal: ""foo.h"" [7:10 - 7:17] preprocessing directive=
564ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Punctuation: "#" [8:1 - 8:2] preprocessing directive=
574ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Identifier: "undef" [8:2 - 8:7] preprocessing directive=
584ae8f298b1ea51b4c2234f9148e2e4349c9bdd23Douglas Gregor// CHECK: Identifier: "BAR" [8:8 - 8:11] preprocessing directive=
59