summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2014-03-18 15:40:57 (GMT)
committerBrad King <brad.king@kitware.com>2014-03-24 15:37:20 (GMT)
commit95c7a3dea54a7c23bf5fd3a9a7fd5adfe1f45414 (patch)
tree6712ab58b1ff81fea60c51a9df2e9ea2fca7db5e /test
parentfbc3aa539f7db36f949daeb37472b807d48e03c9 (diff)
downloadCastXML-95c7a3dea54a7c23bf5fd3a9a7fd5adfe1f45414.zip
CastXML-95c7a3dea54a7c23bf5fd3a9a7fd5adfe1f45414.tar.gz
CastXML-95c7a3dea54a7c23bf5fd3a9a7fd5adfe1f45414.tar.bz2
Output: Fix output of forward-declared classes
When adding a dump node for a class, use the class definition, if available, instead of the canonical declaration. They may not be the same when a class is forward-declared before it is defined. We need to use the definition to get all members.
Diffstat (limited to 'test')
-rw-r--r--test/CMakeLists.txt1
-rw-r--r--test/expect/gccxml.Class-forward-xml.txt17
-rw-r--r--test/input/Class-forward.cxx8
3 files changed, 26 insertions, 0 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index fb279cd..5bca07d 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -83,6 +83,7 @@ castxml_test_gccxml(ArrayType-incomplete)
castxml_test_gccxml(Class)
castxml_test_gccxml(Class-abstract)
castxml_test_gccxml(Class-bases)
+castxml_test_gccxml(Class-forward)
castxml_test_gccxml(Class-friends)
castxml_test_gccxml(Class-incomplete)
castxml_test_gccxml(Class-member-template)
diff --git a/test/expect/gccxml.Class-forward-xml.txt b/test/expect/gccxml.Class-forward-xml.txt
new file mode 100644
index 0000000..6d8f463
--- /dev/null
+++ b/test/expect/gccxml.Class-forward-xml.txt
@@ -0,0 +1,17 @@
+^<\?xml version="1.0"\?>
+<GCC_XML[^>]*>
+ <Class id="_1" name="start" context="_2" location="f1:2" file="f1" line="2" members="_3 _4 _5 _6"/>
+ <Constructor id="_3" name="start" context="_1" access="public" location="f1:4" file="f1" line="4"/>
+ <Constructor id="_4" name="start" context="_1" access="public" location="f1:5" file="f1" line="5">
+ <Argument type="_7" location="f1:5" file="f1" line="5"/>
+ </Constructor>
+ <OperatorMethod id="_5" name="=" returns="_8" context="_1" access="public" location="f1:6" file="f1" line="6">
+ <Argument type="_7" location="f1:6" file="f1" line="6"/>
+ </OperatorMethod>
+ <Destructor id="_6" name="start" context="_1" access="public" location="f1:7" file="f1" line="7"/>
+ <ReferenceType id="_7" type="_1c"/>
+ <ReferenceType id="_8" type="_1"/>
+ <Namespace id="_2" name="::"/>
+ <CvQualifiedType id="_1c" type="_1" const="1"/>
+ <File id="f1" name=".*/test/input/Class-forward.cxx"/>
+</GCC_XML>$
diff --git a/test/input/Class-forward.cxx b/test/input/Class-forward.cxx
new file mode 100644
index 0000000..38374b6
--- /dev/null
+++ b/test/input/Class-forward.cxx
@@ -0,0 +1,8 @@
+class start;
+class start {
+public:
+ start();
+ start(start const&);
+ start& operator=(start const&);
+ ~start();
+};