diff options
Diffstat (limited to 'test/Modules/Inputs/DebugCXX.h')
-rw-r--r-- | test/Modules/Inputs/DebugCXX.h | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/test/Modules/Inputs/DebugCXX.h b/test/Modules/Inputs/DebugCXX.h index b6a52579fc3a1..793ad209f8bf2 100644 --- a/test/Modules/Inputs/DebugCXX.h +++ b/test/Modules/Inputs/DebugCXX.h @@ -24,10 +24,11 @@ namespace DebugCXX { > class Template { T member; }; + // Explicit template instantiation. extern template class Template<int>; extern template struct traits<float>; - typedef class Template<float> FloatInstatiation; + typedef class Template<float> FloatInstantiation; inline void fn() { Template<long> invisible; @@ -48,6 +49,7 @@ namespace DebugCXX { template <typename...> class A; template <typename T> class A<T> {}; typedef A<void> B; + // Anchored by a function parameter. void foo(B) {} } @@ -58,3 +60,48 @@ class FwdVirtual { }; struct PureForwardDecl; + +typedef union { int i; } TypedefUnion; +typedef enum { e0 = 0 } TypedefEnum; +typedef struct { int i; } TypedefStruct; + +union { int i; } GlobalUnion; +struct { int i; } GlobalStruct; +enum { e5 = 5 } GlobalEnum; + +namespace { + namespace { + struct InAnonymousNamespace { int i; }; + } +} + +class Base; +class A { + virtual Base *getParent() const; +}; +class Base {}; +class Derived : Base { + class B : A { + Derived *getParent() const override; + }; +}; + +template <class T> +class Template1 { + T t; +}; +typedef Template1<void *> TypedefTemplate; +extern template class Template1<int>; + +template <class T> class FwdDeclTemplate; +typedef FwdDeclTemplate<int> TypedefFwdDeclTemplate; + +// Member classes of class template specializations. +template <typename T> struct Specialized {}; + +template <> struct Specialized<int> { + struct Member; +}; + +template <class T> struct FwdDeclTemplateMember { struct Member; }; +typedef FwdDeclTemplateMember<int>::Member TypedefFwdDeclTemplateMember; |