aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Frontend/DeclXML.cpp12
-rw-r--r--test/Coverage/c-language-features.inc8
2 files changed, 20 insertions, 0 deletions
diff --git a/lib/Frontend/DeclXML.cpp b/lib/Frontend/DeclXML.cpp
index 97a7f55583..3b600ffd2f 100644
--- a/lib/Frontend/DeclXML.cpp
+++ b/lib/Frontend/DeclXML.cpp
@@ -43,6 +43,18 @@ class DocumentXML::DeclPrinter : public DeclVisitor<DocumentXML::DeclPrinter> {
Visit(*i);
Doc.toParent();
}
+
+ for (RecordDecl::decl_iterator i = RD->decls_begin(),
+ e = RD->decls_end(); i != e; ++i) {
+ Decl *d = *i;
+ if (isa<RecordDecl>(d)) {
+ RecordDecl* pRec = cast<RecordDecl>(d);
+ if (pRec->isDefinition()) {
+ Visit(pRec);
+ Doc.toParent();
+ }
+ }
+ }
}
void addSubNodes(CXXRecordDecl* RD) {
diff --git a/test/Coverage/c-language-features.inc b/test/Coverage/c-language-features.inc
index 3548132500..0ff1237b12 100644
--- a/test/Coverage/c-language-features.inc
+++ b/test/Coverage/c-language-features.inc
@@ -188,3 +188,11 @@ void f10() {
x = (struct f10_s0) { .iv0 = "name" };
}
+
+// Nested structures.
+struct s11 {
+ struct s11_2 {
+ int f0;
+ } f0;
+ int f1;
+};