summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--test/CMakeLists.txt7
-rw-r--r--test/expect/gccxml.broken.Class-template-constructor-template-xml.txt21
-rw-r--r--test/expect/gccxml.broken.ReferenceType-to-Class-template-xml.txt25
-rw-r--r--test/input/Class-template-constructor-template.cxx6
-rw-r--r--test/input/ReferenceType-to-Class-template.cxx4
5 files changed, 63 insertions, 0 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 8c50ce2..2d376ba 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -48,6 +48,10 @@ macro(castxml_test_gccxml test)
castxml_test_gccxml_common(gccxml cxx -std=c++98 ${test})
endmacro()
+macro(castxml_test_gccxml_broken test)
+ castxml_test_gccxml_common(gccxml.broken cxx -std=c++98 ${test})
+endmacro()
+
macro(castxml_test_gccxml_c test)
castxml_test_gccxml_common(gccxml.c c -std=c89 ${test})
endmacro()
@@ -148,3 +152,6 @@ castxml_test_gccxml_c(FundamentalType)
castxml_test_gccxml_c(Typedef-called-class)
castxml_test_gccxml_c(invalid)
+
+castxml_test_gccxml_broken(Class-template-constructor-template)
+castxml_test_gccxml_broken(ReferenceType-to-Class-template)
diff --git a/test/expect/gccxml.broken.Class-template-constructor-template-xml.txt b/test/expect/gccxml.broken.Class-template-constructor-template-xml.txt
new file mode 100644
index 0000000..8fa2b4b
--- /dev/null
+++ b/test/expect/gccxml.broken.Class-template-constructor-template-xml.txt
@@ -0,0 +1,21 @@
+^<\?xml version="1.0"\?>
+<GCC_XML[^>]*>
+ <Class id="_1" name="start&lt;int&gt;" context="_2" location="f1:1" file="f1" line="1" members="_3 _4 _5 _6"/>
+ <Constructor id="_3" name="start" context="_1" access="public" location="f1:3" file="f1" line="3">
+ <Argument type="_7" location="f1:3" file="f1" line="3"/>
+ </Constructor>
+ <Constructor id="_4" name="start" context="_1" access="public" location="f1:4" file="f1" line="4">
+ <Argument type="_8" location="f1:4" file="f1" line="4"/>
+ </Constructor>
+ <OperatorMethod id="_5" name="=" returns="_9" context="_1" access="public" location="f1:1" file="f1" line="1" inline="1" artificial="1">
+ <Argument type="_7" location="f1:1" file="f1" line="1"/>
+ </OperatorMethod>
+ <Destructor id="_6" name="start" context="_1" access="public" location="f1:1" file="f1" line="1" inline="1" artificial="1"/>
+ <ReferenceType id="_7" type="_1c"/>
+ <ReferenceType id="_8" type="_1c"/>(broken: duplicate ReferenceType)?
+ <ReferenceType id="_9" type="_1"/>
+ <Namespace id="_2" name="::"/>
+ <CvQualifiedType id="_1c" type="_1" const="1"/>
+ <CvQualifiedType id="_1c" type="_1" const="1"/>
+ <File id="f1" name=".*/test/input/Class-template-constructor-template.cxx"/>
+</GCC_XML>$
diff --git a/test/expect/gccxml.broken.ReferenceType-to-Class-template-xml.txt b/test/expect/gccxml.broken.ReferenceType-to-Class-template-xml.txt
new file mode 100644
index 0000000..6c01a34
--- /dev/null
+++ b/test/expect/gccxml.broken.ReferenceType-to-Class-template-xml.txt
@@ -0,0 +1,25 @@
+^<\?xml version="1.0"\?>
+<GCC_XML[^>]*>
+ <Function id="_1" name="start" returns="_4" context="_5" location="f1:2" file="f1" line="2">
+ <Argument type="_6" location="f1:2" file="f1" line="2"/>
+ <Argument type="_7" location="f1:2" file="f1" line="2"/>
+ </Function>
+ <Function id="_2" name="start" returns="_4" context="_5" location="f1:3" file="f1" line="3">
+ <Argument type="_8" location="f1:3" file="f1" line="3"/>
+ <Argument type="_9" location="f1:3" file="f1" line="3"/>
+ </Function>
+ <Function id="_3" name="start" returns="_4" context="_5" location="f1:4" file="f1" line="4">
+ <Argument type="_10" location="f1:4" file="f1" line="4"/>
+ <Argument type="_11" location="f1:4" file="f1" line="4"/>
+ </Function>
+ <FundamentalType id="_4" name="void"/>
+ <ReferenceType id="_6" type="_12"/>
+ <FundamentalType id="_7" name="short int"/>
+ <ReferenceType id="_8" type="_12"/>(broken: duplicate ReferenceType)?
+ <FundamentalType id="_9" name="int"/>
+ <ReferenceType id="_10" type="_12"/>(broken: duplicate ReferenceType)?
+ <FundamentalType id="_11" name="long int"/>
+ <Namespace id="_5" name="::"/>
+ <Class id="_12" name="A&lt;int&gt;" context="_5" location="f1:1" file="f1" line="1" incomplete="1"/>
+ <File id="f1" name=".*/test/input/ReferenceType-to-Class-template.cxx"/>
+</GCC_XML>$
diff --git a/test/input/Class-template-constructor-template.cxx b/test/input/Class-template-constructor-template.cxx
new file mode 100644
index 0000000..1ca5d93
--- /dev/null
+++ b/test/input/Class-template-constructor-template.cxx
@@ -0,0 +1,6 @@
+template <typename T> class start {
+public:
+ start(start const&);
+ template <typename U> start(start<U> const&);
+};
+start<int> instantiate_and_copy(start<int> const& x) { return x; }
diff --git a/test/input/ReferenceType-to-Class-template.cxx b/test/input/ReferenceType-to-Class-template.cxx
new file mode 100644
index 0000000..2bf8bbb
--- /dev/null
+++ b/test/input/ReferenceType-to-Class-template.cxx
@@ -0,0 +1,4 @@
+template <typename T> class A {};
+void start(A<int>&, short);
+void start(A<int>&, int);
+void start(A<int>&, long);