diff options
Diffstat (limited to 'test/Modules/Inputs/submodules-merge-defs/defs.h')
| -rw-r--r-- | test/Modules/Inputs/submodules-merge-defs/defs.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/test/Modules/Inputs/submodules-merge-defs/defs.h b/test/Modules/Inputs/submodules-merge-defs/defs.h index 07dfac7ee657f..f6004f0fc8b23 100644 --- a/test/Modules/Inputs/submodules-merge-defs/defs.h +++ b/test/Modules/Inputs/submodules-merge-defs/defs.h @@ -5,10 +5,17 @@ class B { struct Inner1 {}; public: struct Inner2; + struct Inner3; template<typename T> void f(); }; +struct BFriend { + friend class B::Inner3; +private: + struct Inner3Base {}; +}; // Check that lookup and access checks are performed in the right context. struct B::Inner2 : Inner1 {}; +struct B::Inner3 : BFriend::Inner3Base {}; template<typename T> void B::f() {} template<> inline void B::f<int>() {} @@ -97,3 +104,37 @@ namespace MergeFunctionTemplateSpecializations { enum ScopedEnum : int; enum ScopedEnum : int { a, b, c }; + +namespace RedeclDifferentDeclKind { + struct X {}; + typedef X X; + using RedeclDifferentDeclKind::X; +} + +namespace Anon { + struct X { + union { + int n; + }; + }; +} + +namespace ClassTemplatePartialSpec { + template<typename T> struct F; + template<template<int> class A, int B> struct F<A<B>> { + template<typename C> F(); + }; + template<template<int> class A, int B> template<typename C> F<A<B>>::F() {} + + template<typename A, int B> struct F<A[B]> { + template<typename C> F(); + }; + template<typename A, int B> template<typename C> F<A[B]>::F() {} +} + +struct MemberClassTemplate { + template<typename T> struct A; +}; +template<typename T> struct MemberClassTemplate::A {}; +template<typename T> struct MemberClassTemplate::A<T*> {}; +template<> struct MemberClassTemplate::A<int> {}; |
