summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/test/Modules/odr_hash.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/clang/test/Modules/odr_hash.cpp b/clang/test/Modules/odr_hash.cpp
index 2ec8005ce50..e57c36f3864 100644
--- a/clang/test/Modules/odr_hash.cpp
+++ b/clang/test/Modules/odr_hash.cpp
@@ -887,6 +887,52 @@ Bravo<char> golf;
#endif
}
+namespace DifferentParameterNameInTemplate {
+#if defined(FIRST) || defined(SECOND)
+template <typename T>
+struct S {
+ typedef T Type;
+
+ static void Run(const Type *name_one);
+};
+
+template <typename T>
+void S<T>::Run(const T *name_two) {}
+
+template <typename T>
+struct Foo {
+ ~Foo() { Handler::Run(nullptr); }
+ Foo() {}
+
+ class Handler : public S<T> {};
+
+ void Get(typename Handler::Type *x = nullptr) {}
+ void Add() { Handler::Run(nullptr); }
+};
+#endif
+
+#if defined(FIRST)
+struct Beta;
+
+struct Alpha {
+ Alpha();
+ void Go() { betas.Get(); }
+ Foo<Beta> betas;
+};
+
+#elif defined(SECOND)
+struct Beta {};
+
+struct BetaHelper {
+ void add_Beta() { betas.Add(); }
+ Foo<Beta> betas;
+};
+
+#else
+Alpha::Alpha() {}
+#endif
+}
+
// Keep macros contained to one file.
#ifdef FIRST
#undef FIRST
OpenPOWER on IntegriCloud