summaryrefslogtreecommitdiffstats
path: root/test/ASTMerge/class-template-partial-spec
diff options
context:
space:
mode:
Diffstat (limited to 'test/ASTMerge/class-template-partial-spec')
-rw-r--r--test/ASTMerge/class-template-partial-spec/Inputs/class-template-partial-spec1.cpp118
-rw-r--r--test/ASTMerge/class-template-partial-spec/Inputs/class-template-partial-spec2.cpp79
-rw-r--r--test/ASTMerge/class-template-partial-spec/test.cpp25
3 files changed, 0 insertions, 222 deletions
diff --git a/test/ASTMerge/class-template-partial-spec/Inputs/class-template-partial-spec1.cpp b/test/ASTMerge/class-template-partial-spec/Inputs/class-template-partial-spec1.cpp
deleted file mode 100644
index 43606d4d22..0000000000
--- a/test/ASTMerge/class-template-partial-spec/Inputs/class-template-partial-spec1.cpp
+++ /dev/null
@@ -1,118 +0,0 @@
-template<typename T, class 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, float> X1;
-TwoOptionTemplate<void *, wchar_t> X2;
-TwoOptionTemplate<long, long> X3;
-TwoOptionTemplate<float, float> X4;
-TwoOptionTemplate<long, long> SingleSource;
-TwoOptionTemplate<char, double> SecondDoubleSource;
-
-
-template<int I, class C>
-struct IntTemplateSpec {};
-
-template<class C>
-struct IntTemplateSpec<4, C> {
- C member;
-};
-
-template<int I>
-struct IntTemplateSpec<I, void *> {
- int 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, long> Y2;
-IntTemplateSpec<3, int> Y3;
-//template<int I> constexpr int IntTemplateSpec<I, double>::val;
-IntTemplateSpec<42, double> NumberSource;
-static_assert(NumberSource.val == 42);
-
-namespace One {
-namespace Two {
- // Just an empty namespace to ensure we can deal with multiple namespace decls.
-}
-}
-
-
-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
-
-One::Child1<int, double> Z0Source;
-
-// Test import of nested namespace specifiers
-template<typename T>
-struct Outer {
- template<typename U> class Inner0;
-};
-
-template<typename X>
-template<typename Y>
-class Outer<X>::Inner0 {
-public:
- void f(X, Y);
- template<typename Z> struct Inner1;
-};
-
-template<typename X>
-template<typename Y>
-void Outer<X>::Inner0<Y>::f(X, Y) {}
-
-template<typename X>
-template<typename Y>
-template<typename Z>
-class Outer<X>::Inner0<Y>::Inner1 {
-public:
- void f(Y, Z);
-};
-
-template<typename X>
-template<typename Y>
-template<typename Z>
-void Outer<X>::Inner0<Y>::Inner1<Z>::f(Y, Z) {}
diff --git a/test/ASTMerge/class-template-partial-spec/Inputs/class-template-partial-spec2.cpp b/test/ASTMerge/class-template-partial-spec/Inputs/class-template-partial-spec2.cpp
deleted file mode 100644
index 2f3f0c68e2..0000000000
--- a/test/ASTMerge/class-template-partial-spec/Inputs/class-template-partial-spec2.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-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;
diff --git a/test/ASTMerge/class-template-partial-spec/test.cpp b/test/ASTMerge/class-template-partial-spec/test.cpp
deleted file mode 100644
index cfa6052e71..0000000000
--- a/test/ASTMerge/class-template-partial-spec/test.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-// RUN: %clang_cc1 -emit-pch -std=c++1z -o %t.1.ast %S/Inputs/class-template-partial-spec1.cpp
-// RUN: %clang_cc1 -emit-pch -std=c++1z -o %t.2.ast %S/Inputs/class-template-partial-spec2.cpp
-// RUN: not %clang_cc1 -std=c++1z -ast-merge %t.1.ast -ast-merge %t.2.ast -fsyntax-only %s 2>&1 | FileCheck %s
-
-static_assert(sizeof(**SingleSource.member) == sizeof(**SingleDest.member));
-static_assert(sizeof(SecondDoubleSource.member) == sizeof(SecondDoubleDest.member));
-static_assert(NumberSource.val == 42);
-static_assert(sizeof(Z0Source.member) == sizeof(char));
-static_assert(sizeof(Dst::Z0Dst.member) == sizeof(double));
-static_assert(sizeof(One::Child1<double, One::Two::Three::Parent<double>>::member) == sizeof(double));
-
-// CHECK: class-template-partial-spec2.cpp:21:32: error: external variable 'X1' declared with incompatible types in different translation units ('TwoOptionTemplate<int, double>' vs. 'TwoOptionTemplate<int, float>')
-// CHECK: class-template-partial-spec1.cpp:21:31: note: declared here with type 'TwoOptionTemplate<int, float>'
-
-// CHECK: class-template-partial-spec2.cpp:24:29: error: external variable 'X4' declared with incompatible types in different translation units ('TwoOptionTemplate<int, int>' vs. 'TwoOptionTemplate<float, float>')
-// CHECK: class-template-partial-spec1.cpp:24:33: note: declared here with type 'TwoOptionTemplate<float, float>'
-
-// CHECK: class-template-partial-spec1.cpp:38:8: warning: type 'IntTemplateSpec<5, void *>' has incompatible definitions in different translation units
-// CHECK: class-template-partial-spec1.cpp:39:7: note: field 'member' has type 'int' here
-// CHECK: class-template-partial-spec2.cpp:39:10: note: field 'member' has type 'double' here
-
-// CHECK: class-template-partial-spec2.cpp:52:25: error: external variable 'Y3' declared with incompatible types in different translation units ('IntTemplateSpec<2, int>' vs. 'IntTemplateSpec<3, int>')
-// CHECK: class-template-partial-spec1.cpp:52:25: note: declared here with type 'IntTemplateSpec<3, int>'
-
-// CHECK-NOT: static_assert