diff options
Diffstat (limited to 'clang/test')
14 files changed, 80 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/nested-template-default-arg-redecl/alias.h b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/alias.h new file mode 100644 index 00000000000..cff3329ce14 --- /dev/null +++ b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/alias.h @@ -0,0 +1,7 @@ +#ifndef ALIAS_H +#define ALIAS_H +struct alias_outer { + template <typename = int> + using alias = int; +}; +#endif diff --git a/clang/test/Modules/Inputs/nested-template-default-arg-redecl/alias1.h b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/alias1.h new file mode 100644 index 00000000000..736abcbbda4 --- /dev/null +++ b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/alias1.h @@ -0,0 +1 @@ +#include "alias.h" diff --git a/clang/test/Modules/Inputs/nested-template-default-arg-redecl/alias2.h b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/alias2.h new file mode 100644 index 00000000000..736abcbbda4 --- /dev/null +++ b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/alias2.h @@ -0,0 +1 @@ +#include "alias.h" diff --git a/clang/test/Modules/Inputs/nested-template-default-arg-redecl/func.h b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/func.h new file mode 100644 index 00000000000..7a15c697da5 --- /dev/null +++ b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/func.h @@ -0,0 +1,7 @@ +#ifndef FUNC_H +#define FUNC_H +struct func_outer { + template <typename = int> + void func(); +}; +#endif diff --git a/clang/test/Modules/Inputs/nested-template-default-arg-redecl/func1.h b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/func1.h new file mode 100644 index 00000000000..940d76726bd --- /dev/null +++ b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/func1.h @@ -0,0 +1 @@ +#include "func.h" diff --git a/clang/test/Modules/Inputs/nested-template-default-arg-redecl/func2.h b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/func2.h new file mode 100644 index 00000000000..940d76726bd --- /dev/null +++ b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/func2.h @@ -0,0 +1 @@ +#include "func.h" diff --git a/clang/test/Modules/Inputs/nested-template-default-arg-redecl/module.modulemap b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/module.modulemap new file mode 100644 index 00000000000..a0071fd79e1 --- /dev/null +++ b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/module.modulemap @@ -0,0 +1,24 @@ +module ALIAS1 { + header "alias1.h" + module ALIAS2 { + header "alias2.h" + } +} +module VAR1 { + header "var1.h" + module VAR2 { + header "var2.h" + } +} +module FUNC1 { + header "func1.h" + module FUNC2 { + header "func2.h" + } +} +module STRCT1 { + header "strct1.h" + module STRCT2 { + header "strct2.h" + } +} diff --git a/clang/test/Modules/Inputs/nested-template-default-arg-redecl/strct.h b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/strct.h new file mode 100644 index 00000000000..04d12448f35 --- /dev/null +++ b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/strct.h @@ -0,0 +1,7 @@ +#ifndef STRCT_H +#define STRCT_H +struct strct_outer { + template <typename = int> + struct strct; +}; +#endif diff --git a/clang/test/Modules/Inputs/nested-template-default-arg-redecl/strct1.h b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/strct1.h new file mode 100644 index 00000000000..5c29b94e1c7 --- /dev/null +++ b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/strct1.h @@ -0,0 +1 @@ +#include "strct.h" diff --git a/clang/test/Modules/Inputs/nested-template-default-arg-redecl/strct2.h b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/strct2.h new file mode 100644 index 00000000000..5c29b94e1c7 --- /dev/null +++ b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/strct2.h @@ -0,0 +1 @@ +#include "strct.h" diff --git a/clang/test/Modules/Inputs/nested-template-default-arg-redecl/var.h b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/var.h new file mode 100644 index 00000000000..3c3584dcb5a --- /dev/null +++ b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/var.h @@ -0,0 +1,9 @@ +#ifndef VAR_H +#define VAR_H +struct var_outer { + template <typename = int> + static int var; +}; +#endif + + diff --git a/clang/test/Modules/Inputs/nested-template-default-arg-redecl/var1.h b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/var1.h new file mode 100644 index 00000000000..89cee816fb5 --- /dev/null +++ b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/var1.h @@ -0,0 +1 @@ +#include "var.h" diff --git a/clang/test/Modules/Inputs/nested-template-default-arg-redecl/var2.h b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/var2.h new file mode 100644 index 00000000000..89cee816fb5 --- /dev/null +++ b/clang/test/Modules/Inputs/nested-template-default-arg-redecl/var2.h @@ -0,0 +1 @@ +#include "var.h" diff --git a/clang/test/Modules/nested-template-default-arg-redecl.cpp b/clang/test/Modules/nested-template-default-arg-redecl.cpp new file mode 100644 index 00000000000..3baa2022625 --- /dev/null +++ b/clang/test/Modules/nested-template-default-arg-redecl.cpp @@ -0,0 +1,18 @@ +// RUN: rm -rf %t +// RUN: %clang_cc1 -x c++ -fmodules -fimplicit-module-maps -fmodules-cache-path=%t \ +// RUN: -I %S/Inputs/nested-template-default-arg-redecl -std=c++14 \ +// RUN: -fmodules-local-submodule-visibility -verify %s +#include "alias2.h" +#include "var2.h" +#include "strct2.h" +#include "func2.h" + +// FIXME: Variable templates lexical decl context appears to be the translation +// unit, which is incorrect. Fixing this will hopefully address the following +// error/bug: + +// expected-note@Inputs/nested-template-default-arg-redecl/var.h:4 {{default argument declared here}} +auto var = &var_outer::var<>; // expected-error {{default argument of 'var' must be imported from module 'VAR1' before it is required}} +auto func = &func_outer::func<>; +strct_outer::strct<> *strct; +alias_outer::alias<> *alias; |