diff options
Diffstat (limited to 'clang/test/Modules')
5 files changed, 38 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/merge-var-template-def/a.h b/clang/test/Modules/Inputs/merge-var-template-def/a.h new file mode 100644 index 00000000000..6b414b3031f --- /dev/null +++ b/clang/test/Modules/Inputs/merge-var-template-def/a.h @@ -0,0 +1,8 @@ +#ifndef A_H +#define A_H +template<typename T, T v> +struct S { static constexpr T value = v; }; +template<typename T, T v> +constexpr T S<T, v>::value; + +#endif diff --git a/clang/test/Modules/Inputs/merge-var-template-def/b1.h b/clang/test/Modules/Inputs/merge-var-template-def/b1.h new file mode 100644 index 00000000000..35cab9d01c8 --- /dev/null +++ b/clang/test/Modules/Inputs/merge-var-template-def/b1.h @@ -0,0 +1,9 @@ +#ifndef B1_H +#define B1_H +template<typename T, T v> +struct S { static constexpr T value = v; }; +template<typename T, T v> +constexpr T S<T, v>::value; + +#include "a.h" +#endif diff --git a/clang/test/Modules/Inputs/merge-var-template-def/b2.h b/clang/test/Modules/Inputs/merge-var-template-def/b2.h new file mode 100644 index 00000000000..6ab87c2fa71 --- /dev/null +++ b/clang/test/Modules/Inputs/merge-var-template-def/b2.h @@ -0,0 +1,9 @@ +#ifndef B2_H +#define B2_H + +template<typename T, T v> +struct S { static constexpr T value = v; }; +template<typename T, T v> +constexpr T S<T, v>::value; + +#endif diff --git a/clang/test/Modules/Inputs/merge-var-template-def/module.modulemap b/clang/test/Modules/Inputs/merge-var-template-def/module.modulemap new file mode 100644 index 00000000000..b2c96bd8217 --- /dev/null +++ b/clang/test/Modules/Inputs/merge-var-template-def/module.modulemap @@ -0,0 +1,5 @@ +module a { header "a.h" export * } +module b { + module b1 { header "b1.h" export * } + module b2 { header "b2.h" export * } +} diff --git a/clang/test/Modules/merge-var-template-def.cpp b/clang/test/Modules/merge-var-template-def.cpp new file mode 100644 index 00000000000..97a72a194d9 --- /dev/null +++ b/clang/test/Modules/merge-var-template-def.cpp @@ -0,0 +1,7 @@ +// RUN: rm -rf %t +// RUN: %clang_cc1 -I%S/Inputs/merge-var-template-def -std=c++11 -verify %s +// RUN: %clang_cc1 -I%S/Inputs/merge-var-template-def -std=c++11 -verify -fmodules -Werror=undefined-internal -fmodules-local-submodule-visibility -fmodules-cache-path=%t -fimplicit-module-maps %s +// expected-no-diagnostics + +#include "b2.h" +const bool *y = &S<bool, false>::value; |