diff options
Diffstat (limited to 'test/Modules/Inputs')
104 files changed, 587 insertions, 2 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; diff --git a/test/Modules/Inputs/DebugObjC.h b/test/Modules/Inputs/DebugObjC.h index bde463abfd61d..af1cd981ce1c2 100644 --- a/test/Modules/Inputs/DebugObjC.h +++ b/test/Modules/Inputs/DebugObjC.h @@ -1,3 +1,4 @@ +// -*- ObjC -*- @class FwdDecl; @interface ObjCClass { @@ -9,6 +10,11 @@ @property int property; @end +@interface ObjCClassWithPrivateIVars { + int public_ivar; +} +@end + @interface ObjCClass (Category) - categoryMethod; @end @@ -22,3 +28,17 @@ typedef enum { + (InnerEnum)protocolMethod; @end + +struct FwdDeclared; +struct FwdDeclared { + int i; +}; +struct PureForwardDecl; + +typedef union { int i; } TypedefUnion; +typedef enum { e1 = 1 } TypedefEnum; +typedef struct { int i; } TypedefStruct; + +union { int i; } GlobalUnion; +struct { int i; } GlobalStruct; +enum { e2 = 2 } GlobalEnum; diff --git a/test/Modules/Inputs/MacroFabs1.h b/test/Modules/Inputs/MacroFabs1.h new file mode 100644 index 0000000000000..a78c5539f4a20 --- /dev/null +++ b/test/Modules/Inputs/MacroFabs1.h @@ -0,0 +1,6 @@ + +#undef fabs +#define fabs(x) (x) + +#undef my_fabs +#define my_fabs(x) (x) diff --git a/test/Modules/Inputs/MethodPoolCombined1.h b/test/Modules/Inputs/MethodPoolCombined1.h new file mode 100644 index 0000000000000..057b7388b35fa --- /dev/null +++ b/test/Modules/Inputs/MethodPoolCombined1.h @@ -0,0 +1,6 @@ + +@import MethodPoolString1; +@interface A +- (int)stringValue; +@end + diff --git a/test/Modules/Inputs/MethodPoolCombined2.h b/test/Modules/Inputs/MethodPoolCombined2.h new file mode 100644 index 0000000000000..166906e32e391 --- /dev/null +++ b/test/Modules/Inputs/MethodPoolCombined2.h @@ -0,0 +1 @@ +@import MethodPoolString2; diff --git a/test/Modules/Inputs/MethodPoolString1.h b/test/Modules/Inputs/MethodPoolString1.h new file mode 100644 index 0000000000000..c64ad950033e8 --- /dev/null +++ b/test/Modules/Inputs/MethodPoolString1.h @@ -0,0 +1,4 @@ + +@interface S1 +- (int)stringValue; +@end diff --git a/test/Modules/Inputs/MethodPoolString2.h b/test/Modules/Inputs/MethodPoolString2.h new file mode 100644 index 0000000000000..30e9bfb0027d3 --- /dev/null +++ b/test/Modules/Inputs/MethodPoolString2.h @@ -0,0 +1,4 @@ + +@interface S2 +- (int)stringValue; +@end diff --git a/test/Modules/Inputs/PR21547/FirstHeader.h b/test/Modules/Inputs/PR21547/FirstHeader.h new file mode 100644 index 0000000000000..a01c6075932f9 --- /dev/null +++ b/test/Modules/Inputs/PR21547/FirstHeader.h @@ -0,0 +1,13 @@ +template<class Element> struct TMatrixT; +typedef TMatrixT<double> TMatrixD; + +void f(const TMatrixD &m); + +template<class Element> struct TMatrixT { + template <class Element2> TMatrixT(const TMatrixT<Element2> &); + ~TMatrixT() {} + void Determinant () { f(*this); } +}; + +template struct TMatrixT<float>; +template struct TMatrixT<double>; diff --git a/test/Modules/Inputs/PR21547/module.modulemap b/test/Modules/Inputs/PR21547/module.modulemap new file mode 100644 index 0000000000000..8ca0643888b8b --- /dev/null +++ b/test/Modules/Inputs/PR21547/module.modulemap @@ -0,0 +1,4 @@ +module M { + header "FirstHeader.h" + export * +} diff --git a/test/Modules/Inputs/PR24954/A.h b/test/Modules/Inputs/PR24954/A.h new file mode 100644 index 0000000000000..5e5d5bf92ce40 --- /dev/null +++ b/test/Modules/Inputs/PR24954/A.h @@ -0,0 +1,10 @@ +#include "B.h" + +template <class T> +class Expr { +public: + void print(B::basic_ostream<char>& os) { + os << B::setw(42); + os << B::endl; + } +}; diff --git a/test/Modules/Inputs/PR24954/B.h b/test/Modules/Inputs/PR24954/B.h new file mode 100644 index 0000000000000..a8ddc71892709 --- /dev/null +++ b/test/Modules/Inputs/PR24954/B.h @@ -0,0 +1,30 @@ +namespace B { + + template <class _CharT> + struct basic_ostream { + basic_ostream& operator<<(basic_ostream& (*__pf)()); + }; + + + template <class _CharT> basic_ostream<_CharT>& + endl(); + + struct S1 { + template <class _CharT> friend void + operator<<(basic_ostream<_CharT>& __os, const S1& __x); + }; + + S1 setw(int __n); + + template <class _CharT> class S2; + + template <class _CharT> void + operator<<(basic_ostream<_CharT>& __os, const S2<_CharT>& __x); + + template <class _CharT> + struct S2 { + template <class _Cp> friend void + operator<<(basic_ostream<_Cp>& __os, const S2<_Cp>& __x); + }; + +} diff --git a/test/Modules/Inputs/PR24954/module.modulemap b/test/Modules/Inputs/PR24954/module.modulemap new file mode 100644 index 0000000000000..49374181d758c --- /dev/null +++ b/test/Modules/Inputs/PR24954/module.modulemap @@ -0,0 +1,9 @@ +module A { + header "A.h" + export * +} + +module B { + header "B.h" + export * +} diff --git a/test/Modules/Inputs/PR25501/Vector.h b/test/Modules/Inputs/PR25501/Vector.h new file mode 100644 index 0000000000000..9da48303a3a85 --- /dev/null +++ b/test/Modules/Inputs/PR25501/Vector.h @@ -0,0 +1,5 @@ +template <typename> struct _Vector_base {}; +struct vector { + vector() {} + vector(_Vector_base<int>); +}; diff --git a/test/Modules/Inputs/PR25501/a0.h b/test/Modules/Inputs/PR25501/a0.h new file mode 100644 index 0000000000000..1a0d306ca7cf6 --- /dev/null +++ b/test/Modules/Inputs/PR25501/a0.h @@ -0,0 +1 @@ +#include "Vector.h" diff --git a/test/Modules/Inputs/PR25501/a1.h b/test/Modules/Inputs/PR25501/a1.h new file mode 100644 index 0000000000000..1a0d306ca7cf6 --- /dev/null +++ b/test/Modules/Inputs/PR25501/a1.h @@ -0,0 +1 @@ +#include "Vector.h" diff --git a/test/Modules/Inputs/PR25501/a2.h b/test/Modules/Inputs/PR25501/a2.h new file mode 100644 index 0000000000000..7876f310e85fc --- /dev/null +++ b/test/Modules/Inputs/PR25501/a2.h @@ -0,0 +1,3 @@ +#include "a0.h" +vector aaa = vector(); +#include "a1.h" diff --git a/test/Modules/Inputs/PR25501/b.h b/test/Modules/Inputs/PR25501/b.h new file mode 100644 index 0000000000000..7b519836953a0 --- /dev/null +++ b/test/Modules/Inputs/PR25501/b.h @@ -0,0 +1,2 @@ +#include "Vector.h" +vector aaa = vector(); diff --git a/test/Modules/Inputs/PR25501/module.modulemap b/test/Modules/Inputs/PR25501/module.modulemap new file mode 100644 index 0000000000000..c6c8d5ca40f39 --- /dev/null +++ b/test/Modules/Inputs/PR25501/module.modulemap @@ -0,0 +1,4 @@ +module "a0" { header "a0.h" export * } +module "a1" { header "a1.h" export * } +module "a2" { header "a2.h" export * } +module "b" { header "b.h" export * } diff --git a/test/Modules/Inputs/PR26014/A.h b/test/Modules/Inputs/PR26014/A.h new file mode 100644 index 0000000000000..49de5ba479af2 --- /dev/null +++ b/test/Modules/Inputs/PR26014/A.h @@ -0,0 +1,13 @@ +#ifndef _LIBCPP_TYPE_TRAITS +#define _LIBCPP_TYPE_TRAITS + + +template <class _Tp> +struct underlying_type +{ + typedef __underlying_type(_Tp) type; +}; + +#endif // _LIBCPP_TYPE_TRAITS + +#include "B.h" diff --git a/test/Modules/Inputs/PR26014/B.h b/test/Modules/Inputs/PR26014/B.h new file mode 100644 index 0000000000000..58d1f8ff2a3f5 --- /dev/null +++ b/test/Modules/Inputs/PR26014/B.h @@ -0,0 +1,10 @@ +#ifndef _LIBCPP_TYPE_TRAITS +#define _LIBCPP_TYPE_TRAITS + +template <class _Tp> +struct underlying_type +{ + typedef __underlying_type(_Tp) type; +}; + +#endif // _LIBCPP_TYPE_TRAITS diff --git a/test/Modules/Inputs/PR26014/module.modulemap b/test/Modules/Inputs/PR26014/module.modulemap new file mode 100644 index 0000000000000..49374181d758c --- /dev/null +++ b/test/Modules/Inputs/PR26014/module.modulemap @@ -0,0 +1,9 @@ +module A { + header "A.h" + export * +} + +module B { + header "B.h" + export * +} diff --git a/test/Modules/Inputs/PR26179/A.h b/test/Modules/Inputs/PR26179/A.h new file mode 100644 index 0000000000000..c264f4cf9bfb3 --- /dev/null +++ b/test/Modules/Inputs/PR26179/A.h @@ -0,0 +1,2 @@ +#include "basic_string.h" +#include "B.h" diff --git a/test/Modules/Inputs/PR26179/B.h b/test/Modules/Inputs/PR26179/B.h new file mode 100644 index 0000000000000..46a109efdb597 --- /dev/null +++ b/test/Modules/Inputs/PR26179/B.h @@ -0,0 +1 @@ +#include "basic_string.h" diff --git a/test/Modules/Inputs/PR26179/basic_string.h b/test/Modules/Inputs/PR26179/basic_string.h new file mode 100644 index 0000000000000..653ce078451c4 --- /dev/null +++ b/test/Modules/Inputs/PR26179/basic_string.h @@ -0,0 +1,12 @@ +#ifndef _GLIBCXX_STRING +#define _GLIBCXX_STRING 1 + +template<typename T> +struct basic_string { + static T _S_empty_rep_storage[]; +}; + +template<typename T> +T basic_string<T>::_S_empty_rep_storage[sizeof(T)]; + +#endif diff --git a/test/Modules/Inputs/PR26179/module.modulemap b/test/Modules/Inputs/PR26179/module.modulemap new file mode 100644 index 0000000000000..49374181d758c --- /dev/null +++ b/test/Modules/Inputs/PR26179/module.modulemap @@ -0,0 +1,9 @@ +module A { + header "A.h" + export * +} + +module B { + header "B.h" + export * +} diff --git a/test/Modules/Inputs/PR27041/Rtypes.h b/test/Modules/Inputs/PR27041/Rtypes.h new file mode 100644 index 0000000000000..8b137891791fe --- /dev/null +++ b/test/Modules/Inputs/PR27041/Rtypes.h @@ -0,0 +1 @@ + diff --git a/test/Modules/Inputs/PR27041/TGenericClassInfo.h b/test/Modules/Inputs/PR27041/TGenericClassInfo.h new file mode 100644 index 0000000000000..b43b2c90f22ba --- /dev/null +++ b/test/Modules/Inputs/PR27041/TGenericClassInfo.h @@ -0,0 +1,3 @@ +namespace std {} +namespace std { enum float_round_style { denorm_present }; } +#include "TSchemaHelper.h" diff --git a/test/Modules/Inputs/PR27041/TSchemaHelper.h b/test/Modules/Inputs/PR27041/TSchemaHelper.h new file mode 100644 index 0000000000000..31f726f4d75f7 --- /dev/null +++ b/test/Modules/Inputs/PR27041/TSchemaHelper.h @@ -0,0 +1 @@ +namespace std { enum float_round_style { denorm_present }; } diff --git a/test/Modules/Inputs/PR27041/module.modulemap b/test/Modules/Inputs/PR27041/module.modulemap new file mode 100644 index 0000000000000..f0147cdf97624 --- /dev/null +++ b/test/Modules/Inputs/PR27041/module.modulemap @@ -0,0 +1,2 @@ +module "Rtypes.h" { header "Rtypes.h" header "TGenericClassInfo.h" } +module "TSchemaHelper.h" { header "TSchemaHelper.h" } diff --git a/test/Modules/Inputs/PR27186/Rtypes.h b/test/Modules/Inputs/PR27186/Rtypes.h new file mode 100644 index 0000000000000..ecbe10d34d29f --- /dev/null +++ b/test/Modules/Inputs/PR27186/Rtypes.h @@ -0,0 +1,2 @@ +#include <stddef.h> +typedef struct timespec timespec_t; diff --git a/test/Modules/Inputs/PR27186/module.modulemap b/test/Modules/Inputs/PR27186/module.modulemap new file mode 100644 index 0000000000000..58ce19d0d55cb --- /dev/null +++ b/test/Modules/Inputs/PR27186/module.modulemap @@ -0,0 +1,5 @@ +module "Rtypes.h" { header "Rtypes.h" } +module a [extern_c] { + header "stddef.h" + header "time.h" +} diff --git a/test/Modules/Inputs/PR27186/stddef.h b/test/Modules/Inputs/PR27186/stddef.h new file mode 100644 index 0000000000000..8b137891791fe --- /dev/null +++ b/test/Modules/Inputs/PR27186/stddef.h @@ -0,0 +1 @@ + diff --git a/test/Modules/Inputs/PR27186/time.h b/test/Modules/Inputs/PR27186/time.h new file mode 100644 index 0000000000000..9ac2ace3734b4 --- /dev/null +++ b/test/Modules/Inputs/PR27186/time.h @@ -0,0 +1 @@ +struct timespec; diff --git a/test/Modules/Inputs/PR27401/a.h b/test/Modules/Inputs/PR27401/a.h new file mode 100644 index 0000000000000..63d6b707f46f1 --- /dev/null +++ b/test/Modules/Inputs/PR27401/a.h @@ -0,0 +1,17 @@ +#ifndef _LIBCPP_ALGORITHM +#define _LIBCPP_ALGORITHM +template <class _Tp, _Tp> +struct integral_constant { + static const _Tp value = _Tp(); +}; + +template <class _Tp> +struct is_nothrow_default_constructible + : integral_constant<bool, __is_constructible(_Tp)> {}; + +template <class _Tp> +struct is_nothrow_move_constructible + : integral_constant<bool, __is_constructible(_Tp, _Tp)> {}; + +class allocator {}; +#endif diff --git a/test/Modules/Inputs/PR27401/b.h b/test/Modules/Inputs/PR27401/b.h new file mode 100644 index 0000000000000..2b4e7f14fbb40 --- /dev/null +++ b/test/Modules/Inputs/PR27401/b.h @@ -0,0 +1,21 @@ +#include "a.h" +#ifndef _LIBCPP_VECTOR +template <class, class _Allocator> +class __vector_base { +protected: + _Allocator __alloc() const; + __vector_base(_Allocator); +}; + +template <class _Tp, class _Allocator = allocator> +class vector : __vector_base<_Tp, _Allocator> { +public: + vector() noexcept(is_nothrow_default_constructible<_Allocator>::value); + vector(const vector &); + vector(vector &&) + noexcept(is_nothrow_move_constructible<_Allocator>::value); +}; + +#endif +void GetUniquePtrType() { vector<char> v; } + diff --git a/test/Modules/Inputs/PR27401/module.modulemap b/test/Modules/Inputs/PR27401/module.modulemap new file mode 100644 index 0000000000000..a0efadaa0eaf5 --- /dev/null +++ b/test/Modules/Inputs/PR27401/module.modulemap @@ -0,0 +1 @@ +module "b" { header "b.h" export * } diff --git a/test/Modules/Inputs/PR27513/a.h b/test/Modules/Inputs/PR27513/a.h new file mode 100644 index 0000000000000..7eecbf4773d8b --- /dev/null +++ b/test/Modules/Inputs/PR27513/a.h @@ -0,0 +1,5 @@ +#include "b.h" + +inline void f() { basic_string<char> s; } + +#include "c.h" diff --git a/test/Modules/Inputs/PR27513/b.h b/test/Modules/Inputs/PR27513/b.h new file mode 100644 index 0000000000000..b514c1e3476af --- /dev/null +++ b/test/Modules/Inputs/PR27513/b.h @@ -0,0 +1,3 @@ +#include "mystring.h" +#include "b1.h" +#include "b2.h" diff --git a/test/Modules/Inputs/PR27513/b1.h b/test/Modules/Inputs/PR27513/b1.h new file mode 100644 index 0000000000000..a12b29f71bf92 --- /dev/null +++ b/test/Modules/Inputs/PR27513/b1.h @@ -0,0 +1 @@ +#include "b11.h" diff --git a/test/Modules/Inputs/PR27513/b11.h b/test/Modules/Inputs/PR27513/b11.h new file mode 100644 index 0000000000000..e7bfaec9ce7ce --- /dev/null +++ b/test/Modules/Inputs/PR27513/b11.h @@ -0,0 +1,2 @@ +#include "mystring.h" +#include "b111.h" diff --git a/test/Modules/Inputs/PR27513/b111.h b/test/Modules/Inputs/PR27513/b111.h new file mode 100644 index 0000000000000..b7a63b5c2324b --- /dev/null +++ b/test/Modules/Inputs/PR27513/b111.h @@ -0,0 +1,3 @@ +#include "mystring.h" +#include "b1111.h" +#include "b1112.h" diff --git a/test/Modules/Inputs/PR27513/b1111.h b/test/Modules/Inputs/PR27513/b1111.h new file mode 100644 index 0000000000000..3f9cf449b3792 --- /dev/null +++ b/test/Modules/Inputs/PR27513/b1111.h @@ -0,0 +1 @@ +#include "mystring.h" diff --git a/test/Modules/Inputs/PR27513/b1112.h b/test/Modules/Inputs/PR27513/b1112.h new file mode 100644 index 0000000000000..3f9cf449b3792 --- /dev/null +++ b/test/Modules/Inputs/PR27513/b1112.h @@ -0,0 +1 @@ +#include "mystring.h" diff --git a/test/Modules/Inputs/PR27513/b2.h b/test/Modules/Inputs/PR27513/b2.h new file mode 100644 index 0000000000000..3f9cf449b3792 --- /dev/null +++ b/test/Modules/Inputs/PR27513/b2.h @@ -0,0 +1 @@ +#include "mystring.h" diff --git a/test/Modules/Inputs/PR27513/c.h b/test/Modules/Inputs/PR27513/c.h new file mode 100644 index 0000000000000..3f9cf449b3792 --- /dev/null +++ b/test/Modules/Inputs/PR27513/c.h @@ -0,0 +1 @@ +#include "mystring.h" diff --git a/test/Modules/Inputs/PR27513/module.modulemap b/test/Modules/Inputs/PR27513/module.modulemap new file mode 100644 index 0000000000000..ee2a9ce4aa58d --- /dev/null +++ b/test/Modules/Inputs/PR27513/module.modulemap @@ -0,0 +1,7 @@ +module "c.h" {header "c.h" export *} +module "b2.h" { header "b2.h" export *} +module "b.h" {header "b.h" export *} +module "b111.h" { header "b111.h" export *} +module "b11.h" { header "b11.h" export *} +module "b1111.h" { header "b1111.h" export *} +module "b1112.h" { header "b1112.h" export *} diff --git a/test/Modules/Inputs/PR27513/mystring.h b/test/Modules/Inputs/PR27513/mystring.h new file mode 100644 index 0000000000000..95680ed8837be --- /dev/null +++ b/test/Modules/Inputs/PR27513/mystring.h @@ -0,0 +1,8 @@ +#ifndef _GLIBCXX_STRING +#define _GLIBCXX_STRING +template<typename> struct basic_string { + struct _Alloc_hider {} _M_dataplus; + ~basic_string() { _Alloc_hider h; } +}; +extern template class basic_string<char>; +#endif diff --git a/test/Modules/Inputs/PR27739/DataInputHandler.h b/test/Modules/Inputs/PR27739/DataInputHandler.h new file mode 100644 index 0000000000000..1ef02ecb8da08 --- /dev/null +++ b/test/Modules/Inputs/PR27739/DataInputHandler.h @@ -0,0 +1,19 @@ +template < typename > struct vector {}; + +#include <map> +#include "Types.h" + +struct TString { + TString (char *); +}; + +struct TreeInfo {}; + +class DataInputHandler { + void AddTree (); + void SignalTreeInfo () { + fInputTrees[(char*)""]; + } + map <TString, vector <TreeInfo> >fInputTrees; + map <string, bool> fExplicitTrainTest; +}; diff --git a/test/Modules/Inputs/PR27739/Types.h b/test/Modules/Inputs/PR27739/Types.h new file mode 100644 index 0000000000000..6d458a8d98261 --- /dev/null +++ b/test/Modules/Inputs/PR27739/Types.h @@ -0,0 +1 @@ +#include <map> diff --git a/test/Modules/Inputs/PR27739/map b/test/Modules/Inputs/PR27739/map new file mode 100644 index 0000000000000..612685c9e5bd4 --- /dev/null +++ b/test/Modules/Inputs/PR27739/map @@ -0,0 +1,20 @@ +#ifndef _GLIBCXX_MAP +#define _GLIBCXX_MAP +struct basic_string { + basic_string(char *); +} typedef string; + +template <typename> class D; +template <typename _Elements> struct D { + _Elements _M_; + D(D &) = default; +}; + +template <typename _Elements> D<_Elements &&> forward_as_tuple(_Elements); + +template <typename _Key, typename _Tp> struct map { + _Tp operator[](_Key p1) { + auto b = &forward_as_tuple(p1); + } +}; +#endif diff --git a/test/Modules/Inputs/PR27739/module.modulemap b/test/Modules/Inputs/PR27739/module.modulemap new file mode 100644 index 0000000000000..d611e8079e51b --- /dev/null +++ b/test/Modules/Inputs/PR27739/module.modulemap @@ -0,0 +1,2 @@ +module "DataInputHandler.h" { header "DataInputHandler.h" export * } +module "Types.h" { header "Types.h" export *} diff --git a/test/Modules/Inputs/PR27754/RConversionRuleParser.h b/test/Modules/Inputs/PR27754/RConversionRuleParser.h new file mode 100644 index 0000000000000..057dd14698a9c --- /dev/null +++ b/test/Modules/Inputs/PR27754/RConversionRuleParser.h @@ -0,0 +1,4 @@ +#include "algobase.h" +typedef integral_constant<bool, true> true_type; +class _Rb_tree { _Rb_tree() { true_type(); } }; +#include "TSchemaType.h" diff --git a/test/Modules/Inputs/PR27754/TMetaUtils.h b/test/Modules/Inputs/PR27754/TMetaUtils.h new file mode 100644 index 0000000000000..835b7c6dc607e --- /dev/null +++ b/test/Modules/Inputs/PR27754/TMetaUtils.h @@ -0,0 +1,2 @@ +#include "RConversionRuleParser.h" +void fn1() { true_type(); } diff --git a/test/Modules/Inputs/PR27754/TSchemaType.h b/test/Modules/Inputs/PR27754/TSchemaType.h new file mode 100644 index 0000000000000..2c477931707b9 --- /dev/null +++ b/test/Modules/Inputs/PR27754/TSchemaType.h @@ -0,0 +1,2 @@ +#include "algobase.h" +struct A : integral_constant<bool, true> {}; diff --git a/test/Modules/Inputs/PR27754/algobase.h b/test/Modules/Inputs/PR27754/algobase.h new file mode 100644 index 0000000000000..f5e47d8dc7d3f --- /dev/null +++ b/test/Modules/Inputs/PR27754/algobase.h @@ -0,0 +1,4 @@ +#ifndef _STL_ALGOBASE_H +#define _STL_ALGOBASE_H +template<typename _Tp, _Tp> struct integral_constant {}; +#endif diff --git a/test/Modules/Inputs/PR27754/module.modulemap b/test/Modules/Inputs/PR27754/module.modulemap new file mode 100644 index 0000000000000..90dcdbb92b4e4 --- /dev/null +++ b/test/Modules/Inputs/PR27754/module.modulemap @@ -0,0 +1,3 @@ +module "RConversionRuleParser.h" { header "RConversionRuleParser.h" } +module "TMetaUtils.h" { header "TMetaUtils.h" } +module "TSchemaType.h" { header "TSchemaType.h" } diff --git a/test/Modules/Inputs/PR27890/a.h b/test/Modules/Inputs/PR27890/a.h new file mode 100644 index 0000000000000..9c6e562116000 --- /dev/null +++ b/test/Modules/Inputs/PR27890/a.h @@ -0,0 +1,9 @@ +template <class DataType> DataType values(DataType) { __builtin_va_list ValueArgs; return DataType(); } + +template <class DataType> +class opt { +public: + template <class Mods> + opt(Mods) {} +}; + diff --git a/test/Modules/Inputs/PR27890/module.modulemap b/test/Modules/Inputs/PR27890/module.modulemap new file mode 100644 index 0000000000000..85074e8078977 --- /dev/null +++ b/test/Modules/Inputs/PR27890/module.modulemap @@ -0,0 +1 @@ +module A { header "a.h" export * } diff --git a/test/Modules/Inputs/UseAfterFree/UseAfterFreePrivate.h b/test/Modules/Inputs/UseAfterFree/UseAfterFreePrivate.h new file mode 100644 index 0000000000000..e8ed9fda58745 --- /dev/null +++ b/test/Modules/Inputs/UseAfterFree/UseAfterFreePrivate.h @@ -0,0 +1 @@ +@import UseAfterFreePublic; diff --git a/test/Modules/Inputs/UseAfterFree/UseAfterFreePublic.h b/test/Modules/Inputs/UseAfterFree/UseAfterFreePublic.h new file mode 100644 index 0000000000000..d017b0f310b41 --- /dev/null +++ b/test/Modules/Inputs/UseAfterFree/UseAfterFreePublic.h @@ -0,0 +1,2 @@ +@interface S1 +@end diff --git a/test/Modules/Inputs/UseAfterFree/module.map b/test/Modules/Inputs/UseAfterFree/module.map new file mode 100644 index 0000000000000..35c0b3d230d53 --- /dev/null +++ b/test/Modules/Inputs/UseAfterFree/module.map @@ -0,0 +1,3 @@ +module UseAfterFreePublic { + header "UseAfterFreePublic.h" +} diff --git a/test/Modules/Inputs/UseAfterFree/module_private.map b/test/Modules/Inputs/UseAfterFree/module_private.map new file mode 100644 index 0000000000000..75eec4162c4ec --- /dev/null +++ b/test/Modules/Inputs/UseAfterFree/module_private.map @@ -0,0 +1,3 @@ +module UseAfterFreePrivate { + header "UseAfterFreePrivate.h" +} diff --git a/test/Modules/Inputs/builtin.h b/test/Modules/Inputs/builtin.h index 7be90177d1948..4717ff2a52a28 100644 --- a/test/Modules/Inputs/builtin.h +++ b/test/Modules/Inputs/builtin.h @@ -1,3 +1,7 @@ int i; int *p = &i; +void use_constant_string_builtins(void) { + (void)__builtin___CFStringMakeConstantString(""); + (void)__builtin___NSStringMakeConstantString(""); +} diff --git a/test/Modules/Inputs/category_right.h b/test/Modules/Inputs/category_right.h index 3c83624c76165..d8dedf888d15a 100644 --- a/test/Modules/Inputs/category_right.h +++ b/test/Modules/Inputs/category_right.h @@ -1,4 +1,5 @@ @import category_top; +#import "category_right_sub.h" @interface Foo(Right1) -(void)right1; diff --git a/test/Modules/Inputs/crash-recovery/Frameworks/A.framework/Headers/A.h b/test/Modules/Inputs/crash-recovery/Frameworks/A.framework/Headers/A.h new file mode 100644 index 0000000000000..49c9fe07531d8 --- /dev/null +++ b/test/Modules/Inputs/crash-recovery/Frameworks/A.framework/Headers/A.h @@ -0,0 +1 @@ +#include <B/B.h> diff --git a/test/Modules/Inputs/crash-recovery/Frameworks/B.framework/Headers/B.h b/test/Modules/Inputs/crash-recovery/Frameworks/B.framework/Headers/B.h new file mode 100644 index 0000000000000..761540b09cb33 --- /dev/null +++ b/test/Modules/Inputs/crash-recovery/Frameworks/B.framework/Headers/B.h @@ -0,0 +1 @@ +// B.h diff --git a/test/Modules/Inputs/crash-recovery/Frameworks/B.framework/Modules/module.modulemap b/test/Modules/Inputs/crash-recovery/Frameworks/B.framework/Modules/module.modulemap new file mode 100644 index 0000000000000..f6c6e7bf66812 --- /dev/null +++ b/test/Modules/Inputs/crash-recovery/Frameworks/B.framework/Modules/module.modulemap @@ -0,0 +1,5 @@ +framework module B [extern_c] { + umbrella header "B.h" + export * + module * { export * } +} diff --git a/test/Modules/Inputs/crash-recovery/Frameworks/I.framework/Headers/I.h b/test/Modules/Inputs/crash-recovery/Frameworks/I.framework/Headers/I.h new file mode 100644 index 0000000000000..f98baaa7bd3f7 --- /dev/null +++ b/test/Modules/Inputs/crash-recovery/Frameworks/I.framework/Headers/I.h @@ -0,0 +1,2 @@ + +#import <A/A.h> diff --git a/test/Modules/Inputs/crash-recovery/Frameworks/I.framework/Modules/module.modulemap b/test/Modules/Inputs/crash-recovery/Frameworks/I.framework/Modules/module.modulemap new file mode 100644 index 0000000000000..912d39ecf3be6 --- /dev/null +++ b/test/Modules/Inputs/crash-recovery/Frameworks/I.framework/Modules/module.modulemap @@ -0,0 +1,5 @@ +framework module I [extern_c] { + umbrella header "I.h" + export * + module * { export * } +} diff --git a/test/Modules/Inputs/crash-recovery/Frameworks/module.modulemap b/test/Modules/Inputs/crash-recovery/Frameworks/module.modulemap new file mode 100644 index 0000000000000..0f6fcc0b5ada2 --- /dev/null +++ b/test/Modules/Inputs/crash-recovery/Frameworks/module.modulemap @@ -0,0 +1,2 @@ +framework module * [extern_c] { +} diff --git a/test/Modules/Inputs/crash-recovery/usr/include/module.map b/test/Modules/Inputs/crash-recovery/usr/include/module.map new file mode 100644 index 0000000000000..9b429160db502 --- /dev/null +++ b/test/Modules/Inputs/crash-recovery/usr/include/module.map @@ -0,0 +1,16 @@ +module cstd [system] { + // Only in system headers directory + module stdio { + header "stdio.h" + } + + module pthread { + header "pthread.h" + export * + + module impl { + header "pthread_impl.h" + export * + } + } +} diff --git a/test/Modules/Inputs/crash-recovery/usr/include/pthread.h b/test/Modules/Inputs/crash-recovery/usr/include/pthread.h new file mode 100644 index 0000000000000..44ac9fce9520e --- /dev/null +++ b/test/Modules/Inputs/crash-recovery/usr/include/pthread.h @@ -0,0 +1 @@ +#include "pthread/pthread_impl.h" diff --git a/test/Modules/Inputs/crash-recovery/usr/include/pthread/pthread_impl.h b/test/Modules/Inputs/crash-recovery/usr/include/pthread/pthread_impl.h new file mode 100644 index 0000000000000..21a720a7c3cd1 --- /dev/null +++ b/test/Modules/Inputs/crash-recovery/usr/include/pthread/pthread_impl.h @@ -0,0 +1 @@ +#define _PTHREAD_MUTEX_SIG_init 0x32AAABA7 diff --git a/test/Modules/Inputs/crash-recovery/usr/include/pthread_impl.h b/test/Modules/Inputs/crash-recovery/usr/include/pthread_impl.h new file mode 100644 index 0000000000000..21a720a7c3cd1 --- /dev/null +++ b/test/Modules/Inputs/crash-recovery/usr/include/pthread_impl.h @@ -0,0 +1 @@ +#define _PTHREAD_MUTEX_SIG_init 0x32AAABA7 diff --git a/test/Modules/Inputs/crash-recovery/usr/include/stdio.h b/test/Modules/Inputs/crash-recovery/usr/include/stdio.h new file mode 100644 index 0000000000000..f41e09c35a412 --- /dev/null +++ b/test/Modules/Inputs/crash-recovery/usr/include/stdio.h @@ -0,0 +1,3 @@ +typedef struct { int id; } FILE; +int fprintf(FILE*restrict, const char* restrict format, ...); +extern FILE *__stderrp; diff --git a/test/Modules/Inputs/crash-recovery/usr/include/tcl-private/header.h b/test/Modules/Inputs/crash-recovery/usr/include/tcl-private/header.h new file mode 100644 index 0000000000000..0e8fb64a7121e --- /dev/null +++ b/test/Modules/Inputs/crash-recovery/usr/include/tcl-private/header.h @@ -0,0 +1,2 @@ +// tcl-private/header.h +#define TCL_PRIVATE 1 diff --git a/test/Modules/Inputs/cxx-decls-imported.h b/test/Modules/Inputs/cxx-decls-imported.h index a4910fee753e7..0a172150fc145 100644 --- a/test/Modules/Inputs/cxx-decls-imported.h +++ b/test/Modules/Inputs/cxx-decls-imported.h @@ -50,3 +50,8 @@ namespace Alias = Aliased; struct InhCtorA { InhCtorA(int); }; struct InhCtorB : InhCtorA { using InhCtorA::InhCtorA; }; + +struct ClassWithVBases : HasFriends, virtual HasNontrivialDefaultConstructor { + int n; +}; +struct ClassWithVBases; diff --git a/test/Modules/Inputs/cxx-templates-common.h b/test/Modules/Inputs/cxx-templates-common.h index a9ca624486718..8e730c8a852c5 100644 --- a/test/Modules/Inputs/cxx-templates-common.h +++ b/test/Modules/Inputs/cxx-templates-common.h @@ -53,4 +53,21 @@ template<typename T> struct WithAnonymousDecls { typedef int X; }; +namespace hidden_specializations { + template<typename T> void fn() {} + + template<typename T> struct cls { + static void nested_fn() {} + struct nested_cls {}; + static int nested_var; + enum class nested_enum {}; + + template<typename U> static void nested_fn_t() {} + template<typename U> struct nested_cls_t {}; + template<typename U> static int nested_var_t; + }; + + template<typename T> int var; +} + #include "cxx-templates-textual.h" diff --git a/test/Modules/Inputs/cxx-templates-unimported.h b/test/Modules/Inputs/cxx-templates-unimported.h new file mode 100644 index 0000000000000..c2b6b915924b0 --- /dev/null +++ b/test/Modules/Inputs/cxx-templates-unimported.h @@ -0,0 +1,43 @@ +#include "cxx-templates-common.h" + +namespace hidden_specializations { + // explicit specializations + template<> void fn<int>() {} + template<> struct cls<int> { + void nested_fn(); + struct nested_cls; + static int nested_var; + enum nested_enum : int; + }; + template<> int var<int>; + + // partial specializations + template<typename T> struct cls<T*> { + void nested_fn(); + struct nested_cls; + static int nested_var; + enum nested_enum : int; + }; + template<typename T> int var<T*>; + + // member specializations + template<> void cls<void>::nested_fn() {} + template<> struct cls<void>::nested_cls {}; + template<> int cls<void>::nested_var; + template<> enum class cls<void>::nested_enum { e }; + template<> template<typename U> void cls<void>::nested_fn_t() {} + template<> template<typename U> struct cls<void>::nested_cls_t {}; + template<> template<typename U> int cls<void>::nested_var_t; + + // specializations instantiated here are ok if their pattern is + inline void use_stuff() { + fn<char>(); + cls<char>(); + (void)var<char>; + cls<char*>(); + (void)var<char*>; + cls<void>::nested_fn_t<char>(); + cls<void>::nested_cls_t<char>(); + (void)cls<void>::nested_var_t<char>; + } +} diff --git a/test/Modules/Inputs/explicit-build/a.h b/test/Modules/Inputs/explicit-build/a.h index 5e3602f58ffe7..a52f7357ff75a 100644 --- a/test/Modules/Inputs/explicit-build/a.h +++ b/test/Modules/Inputs/explicit-build/a.h @@ -1,4 +1,4 @@ -#if !__building_module(a) +#if !__building_module(a) && !BUILDING_A_PCH #error "should only get here when building module a" #endif diff --git a/test/Modules/Inputs/getSourceDescriptor-crash/h1.h b/test/Modules/Inputs/getSourceDescriptor-crash/h1.h new file mode 100644 index 0000000000000..6f70f09beec22 --- /dev/null +++ b/test/Modules/Inputs/getSourceDescriptor-crash/h1.h @@ -0,0 +1 @@ +#pragma once diff --git a/test/Modules/Inputs/getSourceDescriptor-crash/module.modulemap b/test/Modules/Inputs/getSourceDescriptor-crash/module.modulemap new file mode 100644 index 0000000000000..2006ed5fde22a --- /dev/null +++ b/test/Modules/Inputs/getSourceDescriptor-crash/module.modulemap @@ -0,0 +1,3 @@ +module foo { + header "h1.h" +} diff --git a/test/Modules/Inputs/merge-decl-context/a.h b/test/Modules/Inputs/merge-decl-context/a.h index 89cc7120fd171..7be90b1535de2 100644 --- a/test/Modules/Inputs/merge-decl-context/a.h +++ b/test/Modules/Inputs/merge-decl-context/a.h @@ -21,4 +21,8 @@ inline A<int> ff(int i) { return fff<A<int>>(&i); } +struct Aggregate { + int member; +}; + #endif diff --git a/test/Modules/Inputs/module.map b/test/Modules/Inputs/module.map index 632517dd363fb..6846690c84986 100644 --- a/test/Modules/Inputs/module.map +++ b/test/Modules/Inputs/module.map @@ -215,6 +215,8 @@ module cxx_linkage_cache { module cxx_templates_common { header "cxx-templates-common.h" + + explicit module unimported { header "cxx-templates-unimported.h" } } module cxx_templates_a { @@ -393,3 +395,26 @@ module ElaboratedTypeStructs { header "elaborated-type-structs.h" } } + +// We import a module, then declare a method with selector stringValue in +// MethodPoolCombined1.h. In MethodPoolCombined2.h, we import another module +// that also contains a method for selector stringValue. We make sure that +// the method pool entry for stringValue in this module is complete. +module MethodPoolCombined { + header "MethodPoolCombined1.h" + header "MethodPoolCombined2.h" +} + +module MethodPoolString1 { + header "MethodPoolString1.h" +} + +module MethodPoolString2 { + header "MethodPoolString2.h" +} + +module Empty {} + +module MacroFabs1 { + header "MacroFabs1.h" +} diff --git a/test/Modules/Inputs/non-module.h b/test/Modules/Inputs/non-module.h new file mode 100644 index 0000000000000..c295900bd1084 --- /dev/null +++ b/test/Modules/Inputs/non-module.h @@ -0,0 +1,4 @@ +#ifndef NON_MODULE_H +#define NON_MODULE_H + +#endif diff --git a/test/Modules/Inputs/pch-import-module-with-macro.pch b/test/Modules/Inputs/pch-import-module-with-macro.pch new file mode 100644 index 0000000000000..c06d7728b6202 --- /dev/null +++ b/test/Modules/Inputs/pch-import-module-with-macro.pch @@ -0,0 +1,3 @@ + +@import MacroFabs1; + diff --git a/test/Modules/Inputs/suggest-include/empty.h b/test/Modules/Inputs/suggest-include/empty.h new file mode 100644 index 0000000000000..e69de29bb2d1d --- /dev/null +++ b/test/Modules/Inputs/suggest-include/empty.h diff --git a/test/Modules/Inputs/suggest-include/module.modulemap b/test/Modules/Inputs/suggest-include/module.modulemap new file mode 100644 index 0000000000000..46afd7b2c218f --- /dev/null +++ b/test/Modules/Inputs/suggest-include/module.modulemap @@ -0,0 +1,22 @@ +module X { + module Empty { header "empty.h" } + + exclude header "textual1.h" + textual header "textual2.h" + textual header "textual3.h" + + module A { header "usetextual1.h" } + module B { header "usetextual2.h" } + module C { header "usetextual3.h" } + module D { header "usetextual4.h" } + module E { header "usetextual5.h" } + + module P { private header "private1.h" } + module Q { private header "private2.h" } + module R { private header "private3.h" } + module S { header "useprivate1.h" export * } + module T { header "useprivate3.h" } +} + +module Other { textual header "textual4.h" } + diff --git a/test/Modules/Inputs/suggest-include/private1.h b/test/Modules/Inputs/suggest-include/private1.h new file mode 100644 index 0000000000000..afc7ac71bb46d --- /dev/null +++ b/test/Modules/Inputs/suggest-include/private1.h @@ -0,0 +1 @@ +extern int private1; diff --git a/test/Modules/Inputs/suggest-include/private2.h b/test/Modules/Inputs/suggest-include/private2.h new file mode 100644 index 0000000000000..24a1893d31eb4 --- /dev/null +++ b/test/Modules/Inputs/suggest-include/private2.h @@ -0,0 +1 @@ +extern int private2; diff --git a/test/Modules/Inputs/suggest-include/private3.h b/test/Modules/Inputs/suggest-include/private3.h new file mode 100644 index 0000000000000..26852af2a6a82 --- /dev/null +++ b/test/Modules/Inputs/suggest-include/private3.h @@ -0,0 +1 @@ +extern int private3; diff --git a/test/Modules/Inputs/suggest-include/textual1.h b/test/Modules/Inputs/suggest-include/textual1.h new file mode 100644 index 0000000000000..5b18bfb36856b --- /dev/null +++ b/test/Modules/Inputs/suggest-include/textual1.h @@ -0,0 +1 @@ +#define FOO(X) X diff --git a/test/Modules/Inputs/suggest-include/textual2.h b/test/Modules/Inputs/suggest-include/textual2.h new file mode 100644 index 0000000000000..0c06d4ea454bd --- /dev/null +++ b/test/Modules/Inputs/suggest-include/textual2.h @@ -0,0 +1 @@ +EXPAND_MACRO diff --git a/test/Modules/Inputs/suggest-include/textual3.h b/test/Modules/Inputs/suggest-include/textual3.h new file mode 100644 index 0000000000000..1e52521161033 --- /dev/null +++ b/test/Modules/Inputs/suggest-include/textual3.h @@ -0,0 +1 @@ +extern int textual3; diff --git a/test/Modules/Inputs/suggest-include/textual4.h b/test/Modules/Inputs/suggest-include/textual4.h new file mode 100644 index 0000000000000..091e0c0ac19dc --- /dev/null +++ b/test/Modules/Inputs/suggest-include/textual4.h @@ -0,0 +1 @@ +extern int textual4; diff --git a/test/Modules/Inputs/suggest-include/textual5.h b/test/Modules/Inputs/suggest-include/textual5.h new file mode 100644 index 0000000000000..d808617d50003 --- /dev/null +++ b/test/Modules/Inputs/suggest-include/textual5.h @@ -0,0 +1 @@ +extern int textual5; diff --git a/test/Modules/Inputs/suggest-include/useprivate1.h b/test/Modules/Inputs/suggest-include/useprivate1.h new file mode 100644 index 0000000000000..817b900ecccf1 --- /dev/null +++ b/test/Modules/Inputs/suggest-include/useprivate1.h @@ -0,0 +1 @@ +#include "private1.h" diff --git a/test/Modules/Inputs/suggest-include/useprivate3.h b/test/Modules/Inputs/suggest-include/useprivate3.h new file mode 100644 index 0000000000000..5d5d221b87b83 --- /dev/null +++ b/test/Modules/Inputs/suggest-include/useprivate3.h @@ -0,0 +1 @@ +#include "private3.h" diff --git a/test/Modules/Inputs/suggest-include/usetextual1.h b/test/Modules/Inputs/suggest-include/usetextual1.h new file mode 100644 index 0000000000000..34ab1c76bccd2 --- /dev/null +++ b/test/Modules/Inputs/suggest-include/usetextual1.h @@ -0,0 +1,2 @@ +#include "textual1.h" +FOO(extern int usetextual1;) diff --git a/test/Modules/Inputs/suggest-include/usetextual2.h b/test/Modules/Inputs/suggest-include/usetextual2.h new file mode 100644 index 0000000000000..95b2445736364 --- /dev/null +++ b/test/Modules/Inputs/suggest-include/usetextual2.h @@ -0,0 +1,2 @@ +#define EXPAND_MACRO extern int usetextual2; +#include "textual2.h" diff --git a/test/Modules/Inputs/suggest-include/usetextual3.h b/test/Modules/Inputs/suggest-include/usetextual3.h new file mode 100644 index 0000000000000..15a75cc839f84 --- /dev/null +++ b/test/Modules/Inputs/suggest-include/usetextual3.h @@ -0,0 +1 @@ +#include "textual3.h" diff --git a/test/Modules/Inputs/suggest-include/usetextual4.h b/test/Modules/Inputs/suggest-include/usetextual4.h new file mode 100644 index 0000000000000..395bb6fd65b34 --- /dev/null +++ b/test/Modules/Inputs/suggest-include/usetextual4.h @@ -0,0 +1 @@ +#include "textual4.h" diff --git a/test/Modules/Inputs/suggest-include/usetextual5.h b/test/Modules/Inputs/suggest-include/usetextual5.h new file mode 100644 index 0000000000000..a7335d37aeb8f --- /dev/null +++ b/test/Modules/Inputs/suggest-include/usetextual5.h @@ -0,0 +1 @@ +#include "textual5.h" diff --git a/test/Modules/Inputs/typo.h b/test/Modules/Inputs/typo.h new file mode 100644 index 0000000000000..764c00b7c387f --- /dev/null +++ b/test/Modules/Inputs/typo.h @@ -0,0 +1,6 @@ +@import Empty; + +@interface NSString ++ (id)alloc; +@end + |
