summaryrefslogtreecommitdiffstats
path: root/clang/test
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-06-11 23:46:11 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-06-11 23:46:11 +0000
commitc785276b926f57d6c606cebc1392facc61d18529 (patch)
tree26aa332f958bcfadbf92e0eb4621fb0afff8cea3 /clang/test
parent81d1cc00b7d6de7303deb31ab8569ff3fa4abf56 (diff)
downloadbcm5719-llvm-c785276b926f57d6c606cebc1392facc61d18529.tar.gz
bcm5719-llvm-c785276b926f57d6c606cebc1392facc61d18529.zip
[modules] Fix crash with multiple levels of default template argument merging.
llvm-svn: 239575
Diffstat (limited to 'clang/test')
-rw-r--r--clang/test/Modules/Inputs/submodules-merge-defs/defs.h1
-rw-r--r--clang/test/Modules/submodules-merge-defs.cpp6
2 files changed, 7 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/submodules-merge-defs/defs.h b/clang/test/Modules/Inputs/submodules-merge-defs/defs.h
index 1ab1d1a005b..44259463a10 100644
--- a/clang/test/Modules/Inputs/submodules-merge-defs/defs.h
+++ b/clang/test/Modules/Inputs/submodules-merge-defs/defs.h
@@ -46,6 +46,7 @@ namespace G {
template<typename T = int, int N = 3, template<typename> class K = F> int H(int a = 1);
template<typename T = int, int N = 3, template<typename> class K = F> using I = decltype(H<T, N, K>());
+template<typename T = int, int N = 3, template<typename> class K = F> struct J {};
namespace NS {
struct A {};
diff --git a/clang/test/Modules/submodules-merge-defs.cpp b/clang/test/Modules/submodules-merge-defs.cpp
index 6884f56ce7d..e7c0ad7f0c1 100644
--- a/clang/test/Modules/submodules-merge-defs.cpp
+++ b/clang/test/Modules/submodules-merge-defs.cpp
@@ -40,6 +40,9 @@ int pre_ff = F<int>().f(); // expected-error +{{must be imported}}
int pre_fg = F<int>().g<int>(); // expected-error +{{must be imported}}
// expected-note@defs.h:26 +{{here}}
+J<> pre_j; // expected-error {{must be imported}} expected-error {{too few}}
+// expected-note@defs.h:49 +{{here}}
+
// Make definitions from second module visible.
#ifdef TEXTUAL
#include "import-and-redefine.h"
@@ -65,3 +68,6 @@ int post_fg = F<char>().g<int>();
// expected-error@-5 {{no matching member function}}
// expected-note@defs.h:34 {{substitution failure}}
#endif
+J<> post_j;
+template<typename T, int N, template<typename> class K> struct J;
+J<> post_j2;
OpenPOWER on IntegriCloud