[AST Printer] Print attributes on enum constants
authorJordan Rose <jordan_rose@apple.com>
Fri, 20 Jan 2017 03:33:42 +0000 (03:33 +0000)
committerJordan Rose <jordan_rose@apple.com>
Fri, 20 Jan 2017 03:33:42 +0000 (03:33 +0000)
The AST printer was dropping attributes on enumerators (enum
constants). Now it's not.

llvm-svn: 292571

clang/lib/AST/DeclPrinter.cpp
clang/test/Sema/ast-print.c

index b8ebe1c..15b9a6d 100644 (file)
@@ -464,6 +464,7 @@ void DeclPrinter::VisitRecordDecl(RecordDecl *D) {
 
 void DeclPrinter::VisitEnumConstantDecl(EnumConstantDecl *D) {
   Out << *D;
+  prettyPrintAttributes(D);
   if (Expr *Init = D->getInitExpr()) {
     Out << " = ";
     Init->printPretty(Out, nullptr, Policy, Indentation);
index 4c0aef5..f701b12 100644 (file)
@@ -65,3 +65,12 @@ void initializers() {
   // CHECK: } z = {(struct Z){}};
   } z = {(struct Z){}};
 }
+
+// CHECK-LABEL: enum EnumWithAttributes {
+enum EnumWithAttributes {
+  // CHECK-NEXT: EnumWithAttributesFoo __attribute__((deprecated(""))),
+  EnumWithAttributesFoo __attribute__((deprecated)),
+  // CHECK-NEXT: EnumWithAttributesBar __attribute__((unavailable(""))) = 50
+  EnumWithAttributesBar __attribute__((unavailable)) = 50
+  // CHECK-NEXT: } __attribute__((deprecated("")))
+} __attribute__((deprecated));