202 lines · c
1// RUN: %clang_cc1 -triple x86_64-unknown-unknown -ast-dump=json %s | FileCheck %s2 3#define FOO frobble4#define BAR FOO5 6void FOO(void);7void BAR(void);8 9#define BING(x) x10 11void BING(quux)(void);12 13#define BLIP(x, y) x ## y14#define BLAP(x, y) BLIP(x, y)15 16void BLAP(foo, __COUNTER__)(void);17void BLAP(foo, __COUNTER__)(void);18 19// NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py20// using --filters=FunctionDecl21 22// CHECK-NOT: {{^}}Dumping23// 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": 731// CHECK-NEXT: },32// CHECK-NEXT: "expansionLoc": {33// CHECK-NEXT: "offset": {{[0-9]+}},34// CHECK-NEXT: "line": 6,35// CHECK-NEXT: "col": 6,36// CHECK-NEXT: "tokLen": 337// CHECK-NEXT: }38// CHECK-NEXT: },39// CHECK-NEXT: "range": {40// CHECK-NEXT: "begin": {41// CHECK-NEXT: "offset": {{[0-9]+}},42// CHECK-NEXT: "col": 1,43// CHECK-NEXT: "tokLen": 444// CHECK-NEXT: },45// CHECK-NEXT: "end": {46// CHECK-NEXT: "offset": {{[0-9]+}},47// CHECK-NEXT: "col": 14,48// CHECK-NEXT: "tokLen": 149// CHECK-NEXT: }50// CHECK-NEXT: },51// CHECK-NEXT: "name": "frobble",52// CHECK-NEXT: "mangledName": "frobble",53// CHECK-NEXT: "type": {54// CHECK-NEXT: "qualType": "void (void)"55// CHECK-NEXT: }56// CHECK-NEXT: }57 58// CHECK-NOT: {{^}}Dumping59// 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": 766// CHECK-NEXT: },67// CHECK-NEXT: "expansionLoc": {68// CHECK-NEXT: "offset": {{[0-9]+}},69// CHECK-NEXT: "line": 7,70// CHECK-NEXT: "col": 6,71// CHECK-NEXT: "tokLen": 372// CHECK-NEXT: }73// CHECK-NEXT: },74// CHECK-NEXT: "range": {75// CHECK-NEXT: "begin": {76// CHECK-NEXT: "offset": {{[0-9]+}},77// CHECK-NEXT: "col": 1,78// CHECK-NEXT: "tokLen": 479// CHECK-NEXT: },80// CHECK-NEXT: "end": {81// CHECK-NEXT: "offset": {{[0-9]+}},82// CHECK-NEXT: "col": 14,83// CHECK-NEXT: "tokLen": 184// CHECK-NEXT: }85// CHECK-NEXT: },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)"91// CHECK-NEXT: }92// CHECK-NEXT: }93 94// CHECK-NOT: {{^}}Dumping95// 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": 4102// CHECK-NEXT: },103// CHECK-NEXT: "expansionLoc": {104// CHECK-NEXT: "offset": {{[0-9]+}},105// CHECK-NEXT: "col": 6,106// CHECK-NEXT: "tokLen": 4,107// CHECK-NEXT: "isMacroArgExpansion": true108// CHECK-NEXT: }109// CHECK-NEXT: },110// CHECK-NEXT: "range": {111// CHECK-NEXT: "begin": {112// CHECK-NEXT: "offset": {{[0-9]+}},113// CHECK-NEXT: "col": 1,114// CHECK-NEXT: "tokLen": 4115// CHECK-NEXT: },116// CHECK-NEXT: "end": {117// CHECK-NEXT: "offset": {{[0-9]+}},118// CHECK-NEXT: "col": 21,119// CHECK-NEXT: "tokLen": 1120// CHECK-NEXT: }121// CHECK-NEXT: },122// CHECK-NEXT: "name": "quux",123// CHECK-NEXT: "mangledName": "quux",124// CHECK-NEXT: "type": {125// CHECK-NEXT: "qualType": "void (void)"126// CHECK-NEXT: }127// CHECK-NEXT: }128 129// CHECK-NOT: {{^}}Dumping130// 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": 5,136// CHECK-NEXT: "col": 1,137// CHECK-NEXT: "tokLen": 4138// CHECK-NEXT: },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": 4145// CHECK-NEXT: }146// CHECK-NEXT: },147// CHECK-NEXT: "range": {148// CHECK-NEXT: "begin": {149// CHECK-NEXT: "offset": {{[0-9]+}},150// CHECK-NEXT: "col": 1,151// CHECK-NEXT: "tokLen": 4152// CHECK-NEXT: },153// CHECK-NEXT: "end": {154// CHECK-NEXT: "offset": {{[0-9]+}},155// CHECK-NEXT: "col": 33,156// CHECK-NEXT: "tokLen": 1157// CHECK-NEXT: }158// CHECK-NEXT: },159// CHECK-NEXT: "name": "foo0",160// CHECK-NEXT: "mangledName": "foo0",161// CHECK-NEXT: "type": {162// CHECK-NEXT: "qualType": "void (void)"163// CHECK-NEXT: }164// CHECK-NEXT: }165 166// CHECK-NOT: {{^}}Dumping167// 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": 7,173// CHECK-NEXT: "col": 1,174// CHECK-NEXT: "tokLen": 4175// CHECK-NEXT: },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": 4182// CHECK-NEXT: }183// CHECK-NEXT: },184// CHECK-NEXT: "range": {185// CHECK-NEXT: "begin": {186// CHECK-NEXT: "offset": {{[0-9]+}},187// CHECK-NEXT: "col": 1,188// CHECK-NEXT: "tokLen": 4189// CHECK-NEXT: },190// CHECK-NEXT: "end": {191// CHECK-NEXT: "offset": {{[0-9]+}},192// CHECK-NEXT: "col": 33,193// CHECK-NEXT: "tokLen": 1194// CHECK-NEXT: }195// CHECK-NEXT: },196// CHECK-NEXT: "name": "foo1",197// CHECK-NEXT: "mangledName": "foo1",198// CHECK-NEXT: "type": {199// CHECK-NEXT: "qualType": "void (void)"200// CHECK-NEXT: }201// CHECK-NEXT: }202