diff options
| author | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-07-19 23:44:27 +0000 |
|---|---|---|
| committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-07-19 23:44:27 +0000 |
| commit | 4440d6eae079c335ad372445b68b3d8b2cad6810 (patch) | |
| tree | cdf5981da74541f3b577c1cfe6c33511aaf908b8 /clang/test/Modules | |
| parent | 838838f06a4e7e9c67039233af9f2c9687cee70f (diff) | |
| download | bcm5719-llvm-4440d6eae079c335ad372445b68b3d8b2cad6810.tar.gz bcm5719-llvm-4440d6eae079c335ad372445b68b3d8b2cad6810.zip | |
[modules] Add (already passing) test for template default argument merging when the template is declared in a namespace.
llvm-svn: 242653
Diffstat (limited to 'clang/test/Modules')
| -rw-r--r-- | clang/test/Modules/Inputs/template-default-args/a.h | 2 | ||||
| -rw-r--r-- | clang/test/Modules/Inputs/template-default-args/c.h | 2 | ||||
| -rw-r--r-- | clang/test/Modules/template-default-args.cpp | 13 |
3 files changed, 14 insertions, 3 deletions
diff --git a/clang/test/Modules/Inputs/template-default-args/a.h b/clang/test/Modules/Inputs/template-default-args/a.h index be760fe6f1d..19c80549d1c 100644 --- a/clang/test/Modules/Inputs/template-default-args/a.h +++ b/clang/test/Modules/Inputs/template-default-args/a.h @@ -1,3 +1,4 @@ +BEGIN template<typename T = int> struct A {}; template<typename T> struct B {}; template<typename T> struct C; @@ -5,3 +6,4 @@ template<typename T> struct D; template<typename T> struct E; template<typename T = int> struct G; template<typename T = int> struct H; +END diff --git a/clang/test/Modules/Inputs/template-default-args/c.h b/clang/test/Modules/Inputs/template-default-args/c.h index 2946013b613..30cddb374f9 100644 --- a/clang/test/Modules/Inputs/template-default-args/c.h +++ b/clang/test/Modules/Inputs/template-default-args/c.h @@ -1,2 +1,4 @@ +BEGIN template<typename T = int> struct F; template<typename T, typename U> struct I; +END diff --git a/clang/test/Modules/template-default-args.cpp b/clang/test/Modules/template-default-args.cpp index dc44534302b..c2a6ddca2d7 100644 --- a/clang/test/Modules/template-default-args.cpp +++ b/clang/test/Modules/template-default-args.cpp @@ -1,6 +1,8 @@ // RUN: rm -rf %t -// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -verify -fmodules-cache-path=%t -fno-modules-error-recovery -I %S/Inputs/template-default-args -std=c++11 %s +// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -verify -fmodules-cache-path=%t -fno-modules-error-recovery -I %S/Inputs/template-default-args -std=c++11 %s -DBEGIN= -DEND= +// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -verify -fmodules-cache-path=%t -fno-modules-error-recovery -I %S/Inputs/template-default-args -std=c++11 %s -DBEGIN="namespace N {" -DEND="}" +BEGIN template<typename T> struct A; template<typename T> struct B; template<typename T> struct C; @@ -8,9 +10,11 @@ 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 {}; +END #include "b.h" +BEGIN template<typename T = int> struct A {}; template<typename T> struct B {}; template<typename T = int> struct B; @@ -18,9 +22,11 @@ template<typename T = int> struct C; template<typename T> struct D {}; template<typename T> struct F {}; template<typename T> struct G {}; +END #include "c.h" +BEGIN A<> a; B<> b; extern C<> c; @@ -28,7 +34,8 @@ D<> d; E<> e; F<> f; G<> g; // expected-error {{default argument of 'G' must be imported from module 'X.A' before it is required}} -// 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}} +H<> h; // expected-error {{default argument of 'H' must be imported from module 'X.A' before it is required}} +// expected-note@a.h:8 {{default argument declared here}} I<> i; +END |

