diff options
Diffstat (limited to 'test/Modules/Inputs/merge-template-members')
9 files changed, 59 insertions, 0 deletions
diff --git a/test/Modules/Inputs/merge-template-members/a1.h b/test/Modules/Inputs/merge-template-members/a1.h new file mode 100644 index 0000000..9212a3f --- /dev/null +++ b/test/Modules/Inputs/merge-template-members/a1.h @@ -0,0 +1,9 @@ +namespace N { + template <typename> struct A { + int n; + A() : n() {} + }; + + // Create declaration of A<int>. + typedef A<int> AI; +} diff --git a/test/Modules/Inputs/merge-template-members/a2.h b/test/Modules/Inputs/merge-template-members/a2.h new file mode 100644 index 0000000..9212a3f --- /dev/null +++ b/test/Modules/Inputs/merge-template-members/a2.h @@ -0,0 +1,9 @@ +namespace N { + template <typename> struct A { + int n; + A() : n() {} + }; + + // Create declaration of A<int>. + typedef A<int> AI; +} diff --git a/test/Modules/Inputs/merge-template-members/b1.h b/test/Modules/Inputs/merge-template-members/b1.h new file mode 100644 index 0000000..3828e26 --- /dev/null +++ b/test/Modules/Inputs/merge-template-members/b1.h @@ -0,0 +1,6 @@ +#include "a1.h" + +// Add update record for definition of A<int> and constructors. +// We need an eagerly-emitted use here to get the problematic +// deserialization ordering. +N::A<int> b1; diff --git a/test/Modules/Inputs/merge-template-members/b2.h b/test/Modules/Inputs/merge-template-members/b2.h new file mode 100644 index 0000000..37357ac --- /dev/null +++ b/test/Modules/Inputs/merge-template-members/b2.h @@ -0,0 +1,6 @@ +#include "a2.h" + +// Add update record for definition of A<int> and constructors. +// We need an eagerly-emitted use here to get the problematic +// deserialization ordering. +N::A<int> b2; diff --git a/test/Modules/Inputs/merge-template-members/c.h b/test/Modules/Inputs/merge-template-members/c.h new file mode 100644 index 0000000..92f20a0 --- /dev/null +++ b/test/Modules/Inputs/merge-template-members/c.h @@ -0,0 +1,14 @@ +namespace N { + template <typename> struct A { + int n; + A() : n() {} + }; + + // Trigger instantiation of definition of A<int>. + struct C { + A<int> a; + }; +} + +// Merge in another declaration and update records. +#include "b1.h" diff --git a/test/Modules/Inputs/merge-template-members/def.h b/test/Modules/Inputs/merge-template-members/def.h new file mode 100644 index 0000000..f9f65c3 --- /dev/null +++ b/test/Modules/Inputs/merge-template-members/def.h @@ -0,0 +1,2 @@ +template<typename> struct A { int n; }; +template<typename> struct B { typedef A<void> C; }; diff --git a/test/Modules/Inputs/merge-template-members/merge.h b/test/Modules/Inputs/merge-template-members/merge.h new file mode 100644 index 0000000..72d2d36 --- /dev/null +++ b/test/Modules/Inputs/merge-template-members/merge.h @@ -0,0 +1,2 @@ +#include "b1.h" +#include "b2.h" diff --git a/test/Modules/Inputs/merge-template-members/module.modulemap b/test/Modules/Inputs/merge-template-members/module.modulemap new file mode 100644 index 0000000..0d72e58 --- /dev/null +++ b/test/Modules/Inputs/merge-template-members/module.modulemap @@ -0,0 +1,9 @@ +module def { header "def.h" export * } +module update { header "update.h" export * } + +module a1 { header "a1.h" export * } +module a2 { header "a2.h" export * } +module b1 { header "b1.h" export * } +module b2 { header "b2.h" export * } +module merge { header "merge.h" export * } +module c { header "c.h" export * } diff --git a/test/Modules/Inputs/merge-template-members/update.h b/test/Modules/Inputs/merge-template-members/update.h new file mode 100644 index 0000000..cceb52d --- /dev/null +++ b/test/Modules/Inputs/merge-template-members/update.h @@ -0,0 +1,2 @@ +#include "def.h" +B<int>::C use1; |