diff options
| author | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-06-17 22:13:23 +0000 |
|---|---|---|
| committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-06-17 22:13:23 +0000 |
| commit | afe800c45672199ac1c7de300345126d0dc30087 (patch) | |
| tree | e4028fe1c8b3372745f5e4cd3bfed37dc4db3c0b /clang | |
| parent | 9170efdc0d6274b0d7438dcee929243fcca77e95 (diff) | |
| download | bcm5719-llvm-afe800c45672199ac1c7de300345126d0dc30087.tar.gz bcm5719-llvm-afe800c45672199ac1c7de300345126d0dc30087.zip | |
[modules] Fix typo in default argument merging.
llvm-svn: 239954
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/Serialization/ASTReaderDecl.cpp | 6 | ||||
| -rw-r--r-- | clang/test/Modules/Inputs/submodules-merge-defs/defs.h | 2 | ||||
| -rw-r--r-- | clang/test/Modules/Inputs/template-default-args/c.h | 1 | ||||
| -rw-r--r-- | clang/test/Modules/submodules-merge-defs.cpp | 1 | ||||
| -rw-r--r-- | clang/test/Modules/template-default-args.cpp | 2 |
5 files changed, 9 insertions, 3 deletions
diff --git a/clang/lib/Serialization/ASTReaderDecl.cpp b/clang/lib/Serialization/ASTReaderDecl.cpp index 9cb145e4b48..548ce9c4a4c 100644 --- a/clang/lib/Serialization/ASTReaderDecl.cpp +++ b/clang/lib/Serialization/ASTReaderDecl.cpp @@ -2924,13 +2924,13 @@ static void inheritDefaultTemplateArguments(ASTContext &Context, NamedDecl *ToParam = ToTP->getParam(N - I - 1); if (auto *FTTP = dyn_cast<TemplateTypeParmDecl>(FromParam)) { - if (inheritDefaultTemplateArgument(Context, FTTP, ToParam)) + if (!inheritDefaultTemplateArgument(Context, FTTP, ToParam)) break; } else if (auto *FNTTP = dyn_cast<NonTypeTemplateParmDecl>(FromParam)) { - if (inheritDefaultTemplateArgument(Context, FNTTP, ToParam)) + if (!inheritDefaultTemplateArgument(Context, FNTTP, ToParam)) break; } else { - if (inheritDefaultTemplateArgument( + if (!inheritDefaultTemplateArgument( Context, cast<TemplateTemplateParmDecl>(FromParam), ToParam)) break; } diff --git a/clang/test/Modules/Inputs/submodules-merge-defs/defs.h b/clang/test/Modules/Inputs/submodules-merge-defs/defs.h index 02a4ae946cd..247b05c4708 100644 --- a/clang/test/Modules/Inputs/submodules-merge-defs/defs.h +++ b/clang/test/Modules/Inputs/submodules-merge-defs/defs.h @@ -66,9 +66,11 @@ namespace FriendDefArg { template<typename = int> struct A; template<int = 0> struct B; template<template<typename> class = A> struct C; + template<typename = int, int = 0, template<typename> class = A> struct D {}; template<typename U> struct Y { template<typename> friend struct A; template<int> friend struct B; template<template<typename> class> friend struct C; + template<typename, int, template<typename> class> friend struct D; }; } diff --git a/clang/test/Modules/Inputs/template-default-args/c.h b/clang/test/Modules/Inputs/template-default-args/c.h index c204f313367..2946013b613 100644 --- a/clang/test/Modules/Inputs/template-default-args/c.h +++ b/clang/test/Modules/Inputs/template-default-args/c.h @@ -1 +1,2 @@ template<typename T = int> struct F; +template<typename T, typename U> struct I; diff --git a/clang/test/Modules/submodules-merge-defs.cpp b/clang/test/Modules/submodules-merge-defs.cpp index ee5e4fe1bfd..38b3147adec 100644 --- a/clang/test/Modules/submodules-merge-defs.cpp +++ b/clang/test/Modules/submodules-merge-defs.cpp @@ -82,3 +82,4 @@ J<> post_j; template<typename T, int N, template<typename> class K> struct J; J<> post_j2; FriendDefArg::Y<int> friend_def_arg; +FriendDefArg::D<> friend_def_arg_d; diff --git a/clang/test/Modules/template-default-args.cpp b/clang/test/Modules/template-default-args.cpp index 9b2865421f2..dc44534302b 100644 --- a/clang/test/Modules/template-default-args.cpp +++ b/clang/test/Modules/template-default-args.cpp @@ -7,6 +7,7 @@ template<typename T> struct C; template<typename T = int> struct D; template<typename T = int> struct E {}; template<typename T> struct H {}; +template<typename T = int, typename U = int> struct I {}; #include "b.h" @@ -30,3 +31,4 @@ G<> g; // expected-error {{default argument of 'G' must be imported from module // expected-note@a.h:6 {{default argument declared here}} H<> h; // expected-error {{default argument of 'H' must be imported from module 'X.A' before it is required}} // expected-note@a.h:7 {{default argument declared here}} +I<> i; |

