xref: /llvm-project/clang/test/AST/ast-dump-c-attr.c (revision 874217f99b99ab3c9026dc3b7bd84cd2beebde6e)
1ecbf2f5fSBruno Ricci // Test without serialization:
2*874217f9SNikolas Klauser // RUN: %clang_cc1 -triple x86_64-pc-linux \
3ecbf2f5fSBruno Ricci // RUN: -Wno-deprecated-declarations -ast-dump -ast-dump-filter Test %s \
4ecbf2f5fSBruno Ricci // RUN: | FileCheck --strict-whitespace %s
5ecbf2f5fSBruno Ricci //
6ecbf2f5fSBruno Ricci // Test with serialization:
7*874217f9SNikolas Klauser // RUN: %clang_cc1 -triple x86_64-pc-linux \
8ecbf2f5fSBruno Ricci // RUN: -Wno-deprecated-declarations -emit-pch -o %t %s
9*874217f9SNikolas Klauser // RUN: %clang_cc1 -x c -triple x86_64-pc-linux \
10ecbf2f5fSBruno Ricci // RUN: -Wno-deprecated-declarations -include-pch %t -ast-dump-all -ast-dump-filter Test /dev/null \
11ecbf2f5fSBruno Ricci // RUN: | sed -e "s/ <undeserialized declarations>//" -e "s/ imported//" \
12ecbf2f5fSBruno Ricci // RUN: | FileCheck --strict-whitespace %s
134b5b0c00SAaron Ballman 
144b5b0c00SAaron Ballman int Test1 [[deprecated]];
154b5b0c00SAaron Ballman // CHECK:      VarDecl{{.*}}Test1
164b5b0c00SAaron Ballman // CHECK-NEXT:   DeprecatedAttr 0x{{[^ ]*}} <col:13> "" ""
174b5b0c00SAaron Ballman 
184b5b0c00SAaron Ballman enum [[deprecated("Frobble")]] Test2 {
194b5b0c00SAaron Ballman   Test3 [[deprecated]]
204b5b0c00SAaron Ballman };
214b5b0c00SAaron Ballman // CHECK:      EnumDecl{{.*}}Test2
224b5b0c00SAaron Ballman // CHECK-NEXT:   DeprecatedAttr 0x{{[^ ]*}} <col:8, col:28> "Frobble" ""
234b5b0c00SAaron Ballman // CHECK-NEXT:   EnumConstantDecl{{.*}}Test3
244b5b0c00SAaron Ballman // CHECK-NEXT:     DeprecatedAttr 0x{{[^ ]*}} <col:11> "" ""
254b5b0c00SAaron Ballman 
264b5b0c00SAaron Ballman struct [[deprecated]] Test4 {
274b5b0c00SAaron Ballman   [[deprecated("Frobble")]] int Test5, Test6;
284b5b0c00SAaron Ballman   int Test7 [[deprecated]] : 12;
294b5b0c00SAaron Ballman };
304b5b0c00SAaron Ballman // CHECK:      RecordDecl{{.*}}Test4
314b5b0c00SAaron Ballman // CHECK-NEXT:   DeprecatedAttr 0x{{[^ ]*}} <col:10> "" ""
324b5b0c00SAaron Ballman // CHECK-NEXT:   FieldDecl{{.*}}Test5
334b5b0c00SAaron Ballman // CHECK-NEXT:     DeprecatedAttr 0x{{[^ ]*}} <col:5, col:25> "Frobble" ""
344b5b0c00SAaron Ballman // CHECK-NEXT:   FieldDecl{{.*}}Test6
354b5b0c00SAaron Ballman // CHECK-NEXT:     DeprecatedAttr 0x{{[^ ]*}} <col:5, col:25> "Frobble" ""
364b5b0c00SAaron Ballman // CHECK-NEXT:   FieldDecl{{.*}}Test7
37059a335eSAaron Ballman // CHECK-NEXT:     ConstantExpr{{.*}}'int'
38059a335eSAaron Ballman // CHECK-NEXT:       value: Int 12
394b5b0c00SAaron Ballman // CHECK-NEXT:         IntegerLiteral{{.*}}'int' 12
404b5b0c00SAaron Ballman // CHECK-NEXT:     DeprecatedAttr 0x{{[^ ]*}} <col:15> "" ""
414b5b0c00SAaron Ballman 
424b5b0c00SAaron Ballman struct [[deprecated]] Test8;
434b5b0c00SAaron Ballman // CHECK:      RecordDecl{{.*}}Test8
444b5b0c00SAaron Ballman // CHECK-NEXT:   DeprecatedAttr 0x{{[^ ]*}} <col:10> "" ""
454b5b0c00SAaron Ballman 
464b5b0c00SAaron Ballman [[deprecated]] void Test9(int Test10 [[deprecated]]);
474b5b0c00SAaron Ballman // CHECK:      FunctionDecl{{.*}}Test9
484b5b0c00SAaron Ballman // CHECK-NEXT:   ParmVarDecl{{.*}}Test10
494b5b0c00SAaron Ballman // CHECK-NEXT:     DeprecatedAttr 0x{{[^ ]*}} <col:40> "" ""
504b5b0c00SAaron Ballman // CHECK-NEXT:   DeprecatedAttr 0x{{[^ ]*}} <col:3> "" ""
514b5b0c00SAaron Ballman 
524b5b0c00SAaron Ballman void Test11 [[deprecated]](void);
534b5b0c00SAaron Ballman // CHECK:      FunctionDecl{{.*}}Test11
544b5b0c00SAaron Ballman // CHECK-NEXT:   DeprecatedAttr 0x{{[^ ]*}} <col:15> "" ""
55