From 81475d7fc881a5cdaa2e2a1e61ad335a52549093 Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 11 Apr 2014 14:08:28 -0400 Subject: Output: Traverse extern "C" namespace members Teach AddDeclContextMembers to recurse on LinkageSpecDecl members. --- src/Output.cxx | 5 +++++ test/CMakeLists.txt | 1 + test/expect/gccxml.any.Namespace-extern-C-members.xml.txt | 11 +++++++++++ test/input/Namespace-extern-C-members.cxx | 6 ++++++ 4 files changed, 23 insertions(+) create mode 100644 test/expect/gccxml.any.Namespace-extern-C-members.xml.txt create mode 100644 test/input/Namespace-extern-C-members.cxx diff --git a/src/Output.cxx b/src/Output.cxx index 30bdeb5..0a3c6f4 100644 --- a/src/Output.cxx +++ b/src/Output.cxx @@ -625,6 +625,11 @@ void ASTVisitor::AddDeclContextMembers(clang::DeclContext const* dc, static_cast(d), &emitted); continue; } break; + case clang::Decl::LinkageSpec: { + this->AddDeclContextMembers( + static_cast(d), emitted); + continue; + } break; case clang::Decl::Using: { continue; } break; diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 40d05e8..27b2972 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -162,6 +162,7 @@ castxml_test_gccxml(Namespace-Class-partial-template-members) castxml_test_gccxml(Namespace-Class-template-members) castxml_test_gccxml(Namespace-Function-template-members) castxml_test_gccxml(Namespace-empty) +castxml_test_gccxml(Namespace-extern-C-members) castxml_test_gccxml(OffsetType) castxml_test_gccxml(OffsetType-cv) castxml_test_gccxml(OperatorFunction) diff --git a/test/expect/gccxml.any.Namespace-extern-C-members.xml.txt b/test/expect/gccxml.any.Namespace-extern-C-members.xml.txt new file mode 100644 index 0000000..33f04f3 --- /dev/null +++ b/test/expect/gccxml.any.Namespace-extern-C-members.xml.txt @@ -0,0 +1,11 @@ +^<\?xml version="1.0"\?> +]*> + + + + + + + + +$ diff --git a/test/input/Namespace-extern-C-members.cxx b/test/input/Namespace-extern-C-members.cxx new file mode 100644 index 0000000..debf987 --- /dev/null +++ b/test/input/Namespace-extern-C-members.cxx @@ -0,0 +1,6 @@ +namespace start { + extern "C" { + typedef int Int; + Int function(Int); + } +} -- cgit v0.12