1 // RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump=json %s | FileCheck %s
11 void BING(quux
)(void);
13 #define BLIP(x, y) x ## y
14 #define BLAP(x, y) BLIP(x, y)
16 void BLAP(foo
, __COUNTER__
)(void);
17 void BLAP(foo
, __COUNTER__
)(void);
19 // NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py
20 // using --filters=FunctionDecl
22 // CHECK-NOT: {{^}}Dumping
23 // CHECK: "kind": "FunctionDecl",
24 // CHECK-NEXT: "loc": {
25 // CHECK-NEXT: "spellingLoc": {
26 // CHECK-NEXT: "offset": {{[0-9]+}},
27 // CHECK-NEXT: "file": "{{.*}}",
28 // CHECK-NEXT: "line": 3,
29 // CHECK-NEXT: "col": 13,
30 // CHECK-NEXT: "tokLen": 7
32 // CHECK-NEXT: "expansionLoc": {
33 // CHECK-NEXT: "offset": {{[0-9]+}},
34 // CHECK-NEXT: "line": 6,
35 // CHECK-NEXT: "col": 6,
36 // CHECK-NEXT: "tokLen": 3
39 // CHECK-NEXT: "range": {
40 // CHECK-NEXT: "begin": {
41 // CHECK-NEXT: "offset": {{[0-9]+}},
42 // CHECK-NEXT: "col": 1,
43 // CHECK-NEXT: "tokLen": 4
45 // CHECK-NEXT: "end": {
46 // CHECK-NEXT: "offset": {{[0-9]+}},
47 // CHECK-NEXT: "col": 14,
48 // CHECK-NEXT: "tokLen": 1
51 // CHECK-NEXT: "name": "frobble",
52 // CHECK-NEXT: "mangledName": "frobble",
53 // CHECK-NEXT: "type": {
54 // CHECK-NEXT: "qualType": "void (void)"
58 // CHECK-NOT: {{^}}Dumping
59 // CHECK: "kind": "FunctionDecl",
60 // CHECK-NEXT: "loc": {
61 // CHECK-NEXT: "spellingLoc": {
62 // CHECK-NEXT: "offset": {{[0-9]+}},
63 // CHECK-NEXT: "line": 3,
64 // CHECK-NEXT: "col": 13,
65 // CHECK-NEXT: "tokLen": 7
67 // CHECK-NEXT: "expansionLoc": {
68 // CHECK-NEXT: "offset": {{[0-9]+}},
69 // CHECK-NEXT: "line": 7,
70 // CHECK-NEXT: "col": 6,
71 // CHECK-NEXT: "tokLen": 3
74 // CHECK-NEXT: "range": {
75 // CHECK-NEXT: "begin": {
76 // CHECK-NEXT: "offset": {{[0-9]+}},
77 // CHECK-NEXT: "col": 1,
78 // CHECK-NEXT: "tokLen": 4
80 // CHECK-NEXT: "end": {
81 // CHECK-NEXT: "offset": {{[0-9]+}},
82 // CHECK-NEXT: "col": 14,
83 // CHECK-NEXT: "tokLen": 1
86 // CHECK-NEXT: "previousDecl": "0x{{.*}}",
87 // CHECK-NEXT: "name": "frobble",
88 // CHECK-NEXT: "mangledName": "frobble",
89 // CHECK-NEXT: "type": {
90 // CHECK-NEXT: "qualType": "void (void)"
94 // CHECK-NOT: {{^}}Dumping
95 // CHECK: "kind": "FunctionDecl",
96 // CHECK-NEXT: "loc": {
97 // CHECK-NEXT: "spellingLoc": {
98 // CHECK-NEXT: "offset": {{[0-9]+}},
99 // CHECK-NEXT: "line": 11,
100 // CHECK-NEXT: "col": 11,
101 // CHECK-NEXT: "tokLen": 4
103 // CHECK-NEXT: "expansionLoc": {
104 // CHECK-NEXT: "offset": {{[0-9]+}},
105 // CHECK-NEXT: "col": 6,
106 // CHECK-NEXT: "tokLen": 4,
107 // CHECK-NEXT: "isMacroArgExpansion": true
110 // CHECK-NEXT: "range": {
111 // CHECK-NEXT: "begin": {
112 // CHECK-NEXT: "offset": {{[0-9]+}},
113 // CHECK-NEXT: "col": 1,
114 // CHECK-NEXT: "tokLen": 4
116 // CHECK-NEXT: "end": {
117 // CHECK-NEXT: "offset": {{[0-9]+}},
118 // CHECK-NEXT: "col": 21,
119 // CHECK-NEXT: "tokLen": 1
122 // CHECK-NEXT: "name": "quux",
123 // CHECK-NEXT: "mangledName": "quux",
124 // CHECK-NEXT: "type": {
125 // CHECK-NEXT: "qualType": "void (void)"
129 // CHECK-NOT: {{^}}Dumping
130 // CHECK: "kind": "FunctionDecl",
131 // CHECK-NEXT: "loc": {
132 // CHECK-NEXT: "spellingLoc": {
133 // CHECK-NEXT: "offset": {{[0-9]+}},
134 // CHECK-NEXT: "file": "<scratch space>",
135 // CHECK-NEXT: "line": 3,
136 // CHECK-NEXT: "col": 1,
137 // CHECK-NEXT: "tokLen": 4
139 // CHECK-NEXT: "expansionLoc": {
140 // CHECK-NEXT: "offset": {{[0-9]+}},
141 // CHECK-NEXT: "file": "{{.*}}",
142 // CHECK-NEXT: "line": 16,
143 // CHECK-NEXT: "col": 6,
144 // CHECK-NEXT: "tokLen": 4
147 // CHECK-NEXT: "range": {
148 // CHECK-NEXT: "begin": {
149 // CHECK-NEXT: "offset": {{[0-9]+}},
150 // CHECK-NEXT: "col": 1,
151 // CHECK-NEXT: "tokLen": 4
153 // CHECK-NEXT: "end": {
154 // CHECK-NEXT: "offset": {{[0-9]+}},
155 // CHECK-NEXT: "col": 33,
156 // CHECK-NEXT: "tokLen": 1
159 // CHECK-NEXT: "name": "foo0",
160 // CHECK-NEXT: "mangledName": "foo0",
161 // CHECK-NEXT: "type": {
162 // CHECK-NEXT: "qualType": "void (void)"
166 // CHECK-NOT: {{^}}Dumping
167 // CHECK: "kind": "FunctionDecl",
168 // CHECK-NEXT: "loc": {
169 // CHECK-NEXT: "spellingLoc": {
170 // CHECK-NEXT: "offset": {{[0-9]+}},
171 // CHECK-NEXT: "file": "<scratch space>",
172 // CHECK-NEXT: "line": 5,
173 // CHECK-NEXT: "col": 1,
174 // CHECK-NEXT: "tokLen": 4
176 // CHECK-NEXT: "expansionLoc": {
177 // CHECK-NEXT: "offset": {{[0-9]+}},
178 // CHECK-NEXT: "file": "{{.*}}",
179 // CHECK-NEXT: "line": 17,
180 // CHECK-NEXT: "col": 6,
181 // CHECK-NEXT: "tokLen": 4
184 // CHECK-NEXT: "range": {
185 // CHECK-NEXT: "begin": {
186 // CHECK-NEXT: "offset": {{[0-9]+}},
187 // CHECK-NEXT: "col": 1,
188 // CHECK-NEXT: "tokLen": 4
190 // CHECK-NEXT: "end": {
191 // CHECK-NEXT: "offset": {{[0-9]+}},
192 // CHECK-NEXT: "col": 33,
193 // CHECK-NEXT: "tokLen": 1
196 // CHECK-NEXT: "name": "foo1",
197 // CHECK-NEXT: "mangledName": "foo1",
198 // CHECK-NEXT: "type": {
199 // CHECK-NEXT: "qualType": "void (void)"