summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/Modules/Inputs/nested-template-default-arg-redecl/alias.h7
-rw-r--r--clang/test/Modules/Inputs/nested-template-default-arg-redecl/alias1.h1
-rw-r--r--clang/test/Modules/Inputs/nested-template-default-arg-redecl/alias2.h1
-rw-r--r--clang/test/Modules/Inputs/nested-template-default-arg-redecl/func.h7
-rw-r--r--clang/test/Modules/Inputs/nested-template-default-arg-redecl/func1.h1
-rw-r--r--clang/test/Modules/Inputs/nested-template-default-arg-redecl/func2.h1
-rw-r--r--clang/test/Modules/Inputs/nested-template-default-arg-redecl/module.modulemap24
-rw-r--r--clang/test/Modules/Inputs/nested-template-default-arg-redecl/strct.h7
-rw-r--r--clang/test/Modules/Inputs/nested-template-default-arg-redecl/strct1.h1
-rw-r--r--clang/test/Modules/Inputs/nested-template-default-arg-redecl/strct2.h1
-rw-r--r--clang/test/Modules/Inputs/nested-template-default-arg-redecl/var.h9
-rw-r--r--clang/test/Modules/Inputs/nested-template-default-arg-redecl/var1.h1
-rw-r--r--clang/test/Modules/Inputs/nested-template-default-arg-redecl/var2.h1
-rw-r--r--clang/test/Modules/nested-template-default-arg-redecl.cpp18
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;
OpenPOWER on IntegriCloud