diff options
Diffstat (limited to 'clang/test/Modules/Inputs/stress1/common.h')
-rw-r--r-- | clang/test/Modules/Inputs/stress1/common.h | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/clang/test/Modules/Inputs/stress1/common.h b/clang/test/Modules/Inputs/stress1/common.h index b158a8e6c1e..b52520ee8f5 100644 --- a/clang/test/Modules/Inputs/stress1/common.h +++ b/clang/test/Modules/Inputs/stress1/common.h @@ -5,6 +5,8 @@ inline char function00(char x) { return x + x; } inline short function00(short x) { return x + x; } inline int function00(int x) { return x + x; } +namespace N01 { struct S00; } + namespace N00 { struct S00 { char c; @@ -24,7 +26,19 @@ struct S00 { operator int() { return i; } }; struct S01 {}; -struct S03 {}; +struct S02 {}; +template <typename T> struct S03 { + struct S00 : N00::S00 {}; +}; +template <int I, template <typename> class U> struct S03<U<int>[I]> + : U<int>::S00 { + S03(); + S03(int); + S03(short); + S03(char); + template <typename V = decltype(I)> S03(V); +}; +template <> struct S03<S03<int>[42]> : S00 {}; } namespace N01 { @@ -35,6 +49,14 @@ struct S01 {}; struct S02 {}; } +using namespace N00; + +template <int I, template <typename> class U> template <typename V> S03<U<int>[I]>::S03(V x) : S00(x) {} +template <int I, template <typename> class U> S03<U<int>[I]>::S03() : S00(I) {} +template <int I, template <typename> class U> S03<U<int>[I]>::S03(char x) : S00(x) {} +template <int I, template <typename> class U> S03<U<int>[I]>::S03(short x) : S00(x) {} +template <int I, template <typename> class U> S03<U<int>[I]>::S03(int x) : S00(x) {} + #pragma weak pragma_weak00 #pragma weak pragma_weak01 #pragma weak pragma_weak02 |