Richard Smith | 87bb569 | 2015-06-09 00:35:49 +0000 | [diff] [blame] | 1 | // RUN: rm -rf %t |
| 2 | // RUN: %clang_cc1 -fmodules -verify -fmodules-cache-path=%t -I %S/Inputs/template-default-args -std=c++11 %s |
Richard Smith | 87bb569 | 2015-06-09 00:35:49 +0000 | [diff] [blame] | 3 | |
| 4 | template<typename T> struct A; |
| 5 | template<typename T> struct B; |
| 6 | template<typename T> struct C; |
| 7 | template<typename T = int> struct D; |
Richard Smith | e7bd6de | 2015-06-10 20:30:23 +0000 | [diff] [blame] | 8 | template<typename T = int> struct E {}; |
Richard Smith | 95d8395 | 2015-06-10 20:36:34 +0000 | [diff] [blame^] | 9 | template<typename T> struct H {}; // expected-note {{here}} |
Richard Smith | 87bb569 | 2015-06-09 00:35:49 +0000 | [diff] [blame] | 10 | |
| 11 | #include "b.h" |
| 12 | |
| 13 | template<typename T = int> struct A {}; |
| 14 | template<typename T> struct B {}; |
| 15 | template<typename T = int> struct B; |
| 16 | template<typename T = int> struct C; |
| 17 | template<typename T> struct D {}; |
Richard Smith | e7bd6de | 2015-06-10 20:30:23 +0000 | [diff] [blame] | 18 | template<typename T> struct F {}; |
Richard Smith | 95d8395 | 2015-06-10 20:36:34 +0000 | [diff] [blame^] | 19 | template<typename T> struct G {}; // expected-note {{here}} |
Richard Smith | e7bd6de | 2015-06-10 20:30:23 +0000 | [diff] [blame] | 20 | |
| 21 | #include "c.h" |
Richard Smith | 87bb569 | 2015-06-09 00:35:49 +0000 | [diff] [blame] | 22 | |
| 23 | A<> a; |
| 24 | B<> b; |
| 25 | extern C<> c; |
| 26 | D<> d; |
Richard Smith | e7bd6de | 2015-06-10 20:30:23 +0000 | [diff] [blame] | 27 | E<> e; |
| 28 | F<> f; |
Richard Smith | 95d8395 | 2015-06-10 20:36:34 +0000 | [diff] [blame^] | 29 | G<> g; // expected-error {{too few}} |
| 30 | H<> h; // expected-error {{too few}} |