When dumping the AST to JSON, dump whether a function is variadic or not.

llvm-svn: 361768
diff --git a/clang/lib/AST/JSONNodeDumper.cpp b/clang/lib/AST/JSONNodeDumper.cpp
index 760ea33..08f63fb 100644
--- a/clang/lib/AST/JSONNodeDumper.cpp
+++ b/clang/lib/AST/JSONNodeDumper.cpp
@@ -572,6 +572,8 @@
   attributeOnlyIfTrue("pure", FD->isPure());
   attributeOnlyIfTrue("explicitlyDeleted", FD->isDeletedAsWritten());
   attributeOnlyIfTrue("constexpr", FD->isConstexpr());
+  attributeOnlyIfTrue("variadic", FD->isVariadic());
+
   if (FD->isDefaulted())
     JOS.attribute("explicitlyDefaulted",
                   FD->isDeleted() ? "deleted" : "default");
diff --git a/clang/test/AST/ast-dump-expr-json.cpp b/clang/test/AST/ast-dump-expr-json.cpp
index 15a93a0..c6ccc95 100644
--- a/clang/test/AST/ast-dump-expr-json.cpp
+++ b/clang/test/AST/ast-dump-expr-json.cpp
@@ -4574,6 +4574,7 @@
 // CHECK-NEXT:             "qualType": "auto (int, ...) const"
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "variadic": true,
 // CHECK-NEXT:            "inner": [
 // CHECK-NEXT:             {
 // CHECK-NEXT:              "id": "0x{{.*}}",
@@ -4673,6 +4674,7 @@
 // CHECK-NEXT:            },
 // CHECK-NEXT:            "storageClass": "static",
 // CHECK-NEXT:            "inline": true,
+// CHECK-NEXT:            "variadic": true,
 // CHECK-NEXT:            "inner": [
 // CHECK-NEXT:             {
 // CHECK-NEXT:              "id": "0x{{.*}}",