aboutsummaryrefslogtreecommitdiff
path: root/clang/test/ASTMerge/class-template-partial-spec/Inputs/class-template-partial-spec2.cpp
diff options
context:
space:
mode:
authorAleksei Sidorin <a.sidorin@samsung.com>2017-01-23 09:45:29 +0000
committerAleksei Sidorin <a.sidorin@samsung.com>2017-01-23 09:45:29 +0000
commitdaf82f675e947857c1f1ad929b5a4944404555c4 (patch)
tree936d54c57cf0d3bda21c773f1e8a7a5d2405c254 /clang/test/ASTMerge/class-template-partial-spec/Inputs/class-template-partial-spec2.cpp
parent8e2eca229e1832f12dd8c4622ccb61d65e896a69 (diff)
downloadllvm-daf82f675e947857c1f1ad929b5a4944404555c4.zip
llvm-daf82f675e947857c1f1ad929b5a4944404555c4.tar.gz
llvm-daf82f675e947857c1f1ad929b5a4944404555c4.tar.bz2
ASTImporter: add forgotten tests for rL292776
llvm-svn: 292778
Diffstat (limited to 'clang/test/ASTMerge/class-template-partial-spec/Inputs/class-template-partial-spec2.cpp')
-rw-r--r--clang/test/ASTMerge/class-template-partial-spec/Inputs/class-template-partial-spec2.cpp79
1 files changed, 79 insertions, 0 deletions
diff --git a/clang/test/ASTMerge/class-template-partial-spec/Inputs/class-template-partial-spec2.cpp b/clang/test/ASTMerge/class-template-partial-spec/Inputs/class-template-partial-spec2.cpp
new file mode 100644
index 0000000..2f3f0c6
--- /dev/null
+++ b/clang/test/ASTMerge/class-template-partial-spec/Inputs/class-template-partial-spec2.cpp
@@ -0,0 +1,79 @@
+template<typename T, typename P>
+struct TwoOptionTemplate {};
+
+template<typename T>
+struct TwoOptionTemplate<T, char> {
+ int member;
+};
+
+
+template<typename T>
+struct TwoOptionTemplate<T, double> {
+ float member;
+};
+
+template<typename T>
+struct TwoOptionTemplate<T, T> {
+ T** member;
+};
+
+TwoOptionTemplate<int, char> X0;
+TwoOptionTemplate<int, double> X1;
+TwoOptionTemplate<void *, wchar_t> X2;
+TwoOptionTemplate<long, long> X3;
+TwoOptionTemplate<int, int> X4;
+TwoOptionTemplate<long, long> SingleDest;
+TwoOptionTemplate<int, double> SecondDoubleDest;
+
+
+template<int I, class C>
+struct IntTemplateSpec {};
+
+template<class C>
+struct IntTemplateSpec<4, C> {
+ C member;
+};
+
+template<int I>
+struct IntTemplateSpec<I, void *> {
+ double member;
+ static constexpr int val = I;
+};
+
+template<int I>
+struct IntTemplateSpec<I, double> {
+ char member;
+ static constexpr int val = I;
+};
+
+IntTemplateSpec<4, wchar_t>Y0;
+IntTemplateSpec<5, void *> Y1;
+IntTemplateSpec<1, int> Y2;
+IntTemplateSpec<2, int> Y3;
+IntTemplateSpec<43, double> NumberDest;
+
+namespace One {
+namespace Two {
+namespace Three {
+
+template<class T>
+class Parent {};
+
+} // namespace Three
+
+} // namespace Two
+
+template<typename T, typename X>
+struct Child1: public Two::Three::Parent<unsigned> {
+ char member;
+};
+
+template<class T>
+struct Child1<T, One::Two::Three::Parent<T>> {
+ T member;
+};
+
+} // namespace One
+
+namespace Dst { One::Child1<double, One::Two::Three::Parent<double>> Z0Dst; }
+One::Child1<int, float> Z1;