| // RUN: %clang_cc1 -triple x86_64-pc-linux -Wdocumentation -ast-dump=json %s | FileCheck %s |
| |
| int global_decl; |
| extern __attribute__((alias("global_decl"))) int global_alias; |
| |
| void cleanup_function(int*); |
| void some() { |
| __attribute__((cleanup(cleanup_function))) int var; |
| } |
| |
| __attribute__((deprecated)) int deprecated_var0; |
| __attribute__((deprecated("reason"))) int deprecated_var1; |
| __attribute__((deprecated("reason", "replacement"))) int deprecated_var2; |
| |
| __attribute__((unavailable)) int unavailable_var0; |
| __attribute__((unavailable("reason"))) int unavailable_var1; |
| |
| __attribute__ ((section ("SECTION_NAME"))) int section_var; |
| |
| __attribute__ ((visibility ("hidden"))) int visibility_var; |
| |
| __thread __attribute__ ((tls_model ("local-exec"))) int tls_model_var; |
| |
| // NOTE: CHECK lines have been autogenerated by gen_ast_dump_json_test.py |
| // using --filters=VarDecl |
| |
| |
| // CHECK-NOT: {{^}}Dumping |
| // CHECK: "kind": "VarDecl", |
| // CHECK-NEXT: "loc": { |
| // CHECK-NEXT: "offset": 97, |
| // CHECK-NEXT: "file": "{{.*}}", |
| // CHECK-NEXT: "line": 3, |
| // CHECK-NEXT: "col": 5, |
| // CHECK-NEXT: "tokLen": 11 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "begin": { |
| // CHECK-NEXT: "offset": 93, |
| // CHECK-NEXT: "col": 1, |
| // CHECK-NEXT: "tokLen": 3 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "offset": 97, |
| // CHECK-NEXT: "col": 5, |
| // CHECK-NEXT: "tokLen": 11 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "isUsed": true, |
| // CHECK-NEXT: "name": "global_decl", |
| // CHECK-NEXT: "mangledName": "global_decl", |
| // CHECK-NEXT: "type": { |
| // CHECK-NEXT: "qualType": "int" |
| // CHECK-NEXT: } |
| // CHECK-NEXT: } |
| |
| |
| // CHECK-NOT: {{^}}Dumping |
| // CHECK: "kind": "VarDecl", |
| // CHECK-NEXT: "loc": { |
| // CHECK-NEXT: "offset": 159, |
| // CHECK-NEXT: "line": 4, |
| // CHECK-NEXT: "col": 50, |
| // CHECK-NEXT: "tokLen": 12 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "begin": { |
| // CHECK-NEXT: "offset": 110, |
| // CHECK-NEXT: "col": 1, |
| // CHECK-NEXT: "tokLen": 6 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "offset": 159, |
| // CHECK-NEXT: "col": 50, |
| // CHECK-NEXT: "tokLen": 12 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "name": "global_alias", |
| // CHECK-NEXT: "mangledName": "global_alias", |
| // CHECK-NEXT: "type": { |
| // CHECK-NEXT: "qualType": "int" |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "storageClass": "extern", |
| // CHECK-NEXT: "inner": [ |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "id": "0x{{.*}}", |
| // CHECK-NEXT: "kind": "AliasAttr", |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "begin": { |
| // CHECK-NEXT: "offset": 132, |
| // CHECK-NEXT: "col": 23, |
| // CHECK-NEXT: "tokLen": 5 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "offset": 151, |
| // CHECK-NEXT: "col": 42, |
| // CHECK-NEXT: "tokLen": 1 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "aliasee": "global_decl" |
| // CHECK-NEXT: } |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| |
| |
| // CHECK-NOT: {{^}}Dumping |
| // CHECK: "kind": "VarDecl", |
| // CHECK-NEXT: "loc": { |
| // CHECK-NEXT: "offset": 266, |
| // CHECK-NEXT: "col": 50, |
| // CHECK-NEXT: "tokLen": 3 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "begin": { |
| // CHECK-NEXT: "offset": 219, |
| // CHECK-NEXT: "col": 3, |
| // CHECK-NEXT: "tokLen": 13 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "offset": 266, |
| // CHECK-NEXT: "col": 50, |
| // CHECK-NEXT: "tokLen": 3 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "name": "var", |
| // CHECK-NEXT: "type": { |
| // CHECK-NEXT: "qualType": "int" |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "inner": [ |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "id": "0x{{.*}}", |
| // CHECK-NEXT: "kind": "CleanupAttr", |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "begin": { |
| // CHECK-NEXT: "offset": 234, |
| // CHECK-NEXT: "col": 18, |
| // CHECK-NEXT: "tokLen": 7 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "offset": 258, |
| // CHECK-NEXT: "col": 42, |
| // CHECK-NEXT: "tokLen": 1 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "cleanup_function": { |
| // CHECK-NEXT: "id": "0x{{.*}}", |
| // CHECK-NEXT: "kind": "FunctionDecl", |
| // CHECK-NEXT: "name": "cleanup_function", |
| // CHECK-NEXT: "type": { |
| // CHECK-NEXT: "qualType": "void (int *)" |
| // CHECK-NEXT: } |
| // CHECK-NEXT: } |
| // CHECK-NEXT: } |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| |
| |
| // CHECK-NOT: {{^}}Dumping |
| // CHECK: "kind": "VarDecl", |
| // CHECK-NEXT: "loc": { |
| // CHECK-NEXT: "offset": 306, |
| // CHECK-NEXT: "line": 11, |
| // CHECK-NEXT: "col": 33, |
| // CHECK-NEXT: "tokLen": 15 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "begin": { |
| // CHECK-NEXT: "offset": 274, |
| // CHECK-NEXT: "col": 1, |
| // CHECK-NEXT: "tokLen": 13 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "offset": 306, |
| // CHECK-NEXT: "col": 33, |
| // CHECK-NEXT: "tokLen": 15 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "name": "deprecated_var0", |
| // CHECK-NEXT: "mangledName": "deprecated_var0", |
| // CHECK-NEXT: "type": { |
| // CHECK-NEXT: "qualType": "int" |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "inner": [ |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "id": "0x{{.*}}", |
| // CHECK-NEXT: "kind": "DeprecatedAttr", |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "begin": { |
| // CHECK-NEXT: "offset": 289, |
| // CHECK-NEXT: "col": 16, |
| // CHECK-NEXT: "tokLen": 10 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "offset": 289, |
| // CHECK-NEXT: "col": 16, |
| // CHECK-NEXT: "tokLen": 10 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: } |
| // CHECK-NEXT: } |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| |
| |
| // CHECK-NOT: {{^}}Dumping |
| // CHECK: "kind": "VarDecl", |
| // CHECK-NEXT: "loc": { |
| // CHECK-NEXT: "offset": 365, |
| // CHECK-NEXT: "line": 12, |
| // CHECK-NEXT: "col": 43, |
| // CHECK-NEXT: "tokLen": 15 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "begin": { |
| // CHECK-NEXT: "offset": 323, |
| // CHECK-NEXT: "col": 1, |
| // CHECK-NEXT: "tokLen": 13 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "offset": 365, |
| // CHECK-NEXT: "col": 43, |
| // CHECK-NEXT: "tokLen": 15 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "name": "deprecated_var1", |
| // CHECK-NEXT: "mangledName": "deprecated_var1", |
| // CHECK-NEXT: "type": { |
| // CHECK-NEXT: "qualType": "int" |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "inner": [ |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "id": "0x{{.*}}", |
| // CHECK-NEXT: "kind": "DeprecatedAttr", |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "begin": { |
| // CHECK-NEXT: "offset": 338, |
| // CHECK-NEXT: "col": 16, |
| // CHECK-NEXT: "tokLen": 10 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "offset": 357, |
| // CHECK-NEXT: "col": 35, |
| // CHECK-NEXT: "tokLen": 1 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "message": "reason" |
| // CHECK-NEXT: } |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| |
| |
| // CHECK-NOT: {{^}}Dumping |
| // CHECK: "kind": "VarDecl", |
| // CHECK-NEXT: "loc": { |
| // CHECK-NEXT: "offset": 439, |
| // CHECK-NEXT: "line": 13, |
| // CHECK-NEXT: "col": 58, |
| // CHECK-NEXT: "tokLen": 15 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "begin": { |
| // CHECK-NEXT: "offset": 382, |
| // CHECK-NEXT: "col": 1, |
| // CHECK-NEXT: "tokLen": 13 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "offset": 439, |
| // CHECK-NEXT: "col": 58, |
| // CHECK-NEXT: "tokLen": 15 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "name": "deprecated_var2", |
| // CHECK-NEXT: "mangledName": "deprecated_var2", |
| // CHECK-NEXT: "type": { |
| // CHECK-NEXT: "qualType": "int" |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "inner": [ |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "id": "0x{{.*}}", |
| // CHECK-NEXT: "kind": "DeprecatedAttr", |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "begin": { |
| // CHECK-NEXT: "offset": 397, |
| // CHECK-NEXT: "col": 16, |
| // CHECK-NEXT: "tokLen": 10 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "offset": 431, |
| // CHECK-NEXT: "col": 50, |
| // CHECK-NEXT: "tokLen": 1 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "message": "reason", |
| // CHECK-NEXT: "replacement": "replacement" |
| // CHECK-NEXT: } |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| |
| |
| // CHECK-NOT: {{^}}Dumping |
| // CHECK: "kind": "VarDecl", |
| // CHECK-NEXT: "loc": { |
| // CHECK-NEXT: "offset": 490, |
| // CHECK-NEXT: "line": 15, |
| // CHECK-NEXT: "col": 34, |
| // CHECK-NEXT: "tokLen": 16 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "begin": { |
| // CHECK-NEXT: "offset": 457, |
| // CHECK-NEXT: "col": 1, |
| // CHECK-NEXT: "tokLen": 13 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "offset": 490, |
| // CHECK-NEXT: "col": 34, |
| // CHECK-NEXT: "tokLen": 16 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "name": "unavailable_var0", |
| // CHECK-NEXT: "mangledName": "unavailable_var0", |
| // CHECK-NEXT: "type": { |
| // CHECK-NEXT: "qualType": "int" |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "inner": [ |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "id": "0x{{.*}}", |
| // CHECK-NEXT: "kind": "UnavailableAttr", |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "begin": { |
| // CHECK-NEXT: "offset": 472, |
| // CHECK-NEXT: "col": 16, |
| // CHECK-NEXT: "tokLen": 11 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "offset": 472, |
| // CHECK-NEXT: "col": 16, |
| // CHECK-NEXT: "tokLen": 11 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: } |
| // CHECK-NEXT: } |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| |
| |
| // CHECK-NOT: {{^}}Dumping |
| // CHECK: "kind": "VarDecl", |
| // CHECK-NEXT: "loc": { |
| // CHECK-NEXT: "offset": 551, |
| // CHECK-NEXT: "line": 16, |
| // CHECK-NEXT: "col": 44, |
| // CHECK-NEXT: "tokLen": 16 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "begin": { |
| // CHECK-NEXT: "offset": 508, |
| // CHECK-NEXT: "col": 1, |
| // CHECK-NEXT: "tokLen": 13 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "offset": 551, |
| // CHECK-NEXT: "col": 44, |
| // CHECK-NEXT: "tokLen": 16 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "name": "unavailable_var1", |
| // CHECK-NEXT: "mangledName": "unavailable_var1", |
| // CHECK-NEXT: "type": { |
| // CHECK-NEXT: "qualType": "int" |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "inner": [ |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "id": "0x{{.*}}", |
| // CHECK-NEXT: "kind": "UnavailableAttr", |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "begin": { |
| // CHECK-NEXT: "offset": 523, |
| // CHECK-NEXT: "col": 16, |
| // CHECK-NEXT: "tokLen": 11 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "offset": 543, |
| // CHECK-NEXT: "col": 36, |
| // CHECK-NEXT: "tokLen": 1 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "message": "reason" |
| // CHECK-NEXT: } |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| |
| |
| // CHECK-NOT: {{^}}Dumping |
| // CHECK: "kind": "VarDecl", |
| // CHECK-NEXT: "loc": { |
| // CHECK-NEXT: "offset": 617, |
| // CHECK-NEXT: "line": 18, |
| // CHECK-NEXT: "col": 48, |
| // CHECK-NEXT: "tokLen": 11 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "begin": { |
| // CHECK-NEXT: "offset": 570, |
| // CHECK-NEXT: "col": 1, |
| // CHECK-NEXT: "tokLen": 13 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "offset": 617, |
| // CHECK-NEXT: "col": 48, |
| // CHECK-NEXT: "tokLen": 11 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "name": "section_var", |
| // CHECK-NEXT: "mangledName": "section_var", |
| // CHECK-NEXT: "type": { |
| // CHECK-NEXT: "qualType": "int" |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "inner": [ |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "id": "0x{{.*}}", |
| // CHECK-NEXT: "kind": "SectionAttr", |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "begin": { |
| // CHECK-NEXT: "offset": 586, |
| // CHECK-NEXT: "col": 17, |
| // CHECK-NEXT: "tokLen": 7 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "offset": 609, |
| // CHECK-NEXT: "col": 40, |
| // CHECK-NEXT: "tokLen": 1 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "section_name": "SECTION_NAME" |
| // CHECK-NEXT: } |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| |
| |
| // CHECK-NOT: {{^}}Dumping |
| // CHECK: "kind": "VarDecl", |
| // CHECK-NEXT: "loc": { |
| // CHECK-NEXT: "offset": 675, |
| // CHECK-NEXT: "line": 20, |
| // CHECK-NEXT: "col": 45, |
| // CHECK-NEXT: "tokLen": 14 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "begin": { |
| // CHECK-NEXT: "offset": 631, |
| // CHECK-NEXT: "col": 1, |
| // CHECK-NEXT: "tokLen": 13 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "offset": 675, |
| // CHECK-NEXT: "col": 45, |
| // CHECK-NEXT: "tokLen": 14 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "name": "visibility_var", |
| // CHECK-NEXT: "mangledName": "visibility_var", |
| // CHECK-NEXT: "type": { |
| // CHECK-NEXT: "qualType": "int" |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "inner": [ |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "id": "0x{{.*}}", |
| // CHECK-NEXT: "kind": "VisibilityAttr", |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "begin": { |
| // CHECK-NEXT: "offset": 647, |
| // CHECK-NEXT: "col": 17, |
| // CHECK-NEXT: "tokLen": 10 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "offset": 667, |
| // CHECK-NEXT: "col": 37, |
| // CHECK-NEXT: "tokLen": 1 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "visibility": "hidden" |
| // CHECK-NEXT: } |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| |
| |
| // CHECK-NOT: {{^}}Dumping |
| // CHECK: "kind": "VarDecl", |
| // CHECK-NEXT: "loc": { |
| // CHECK-NEXT: "offset": 748, |
| // CHECK-NEXT: "line": 22, |
| // CHECK-NEXT: "col": 57, |
| // CHECK-NEXT: "tokLen": 13 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "begin": { |
| // CHECK-NEXT: "offset": 692, |
| // CHECK-NEXT: "col": 1, |
| // CHECK-NEXT: "tokLen": 8 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "offset": 748, |
| // CHECK-NEXT: "col": 57, |
| // CHECK-NEXT: "tokLen": 13 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "name": "tls_model_var", |
| // CHECK-NEXT: "mangledName": "tls_model_var", |
| // CHECK-NEXT: "type": { |
| // CHECK-NEXT: "qualType": "int" |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "tls": "static", |
| // CHECK-NEXT: "inner": [ |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "id": "0x{{.*}}", |
| // CHECK-NEXT: "kind": "TLSModelAttr", |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "begin": { |
| // CHECK-NEXT: "offset": 717, |
| // CHECK-NEXT: "col": 26, |
| // CHECK-NEXT: "tokLen": 9 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "offset": 740, |
| // CHECK-NEXT: "col": 49, |
| // CHECK-NEXT: "tokLen": 1 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "tls_model": "local-exec" |
| // CHECK-NEXT: } |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |