summaryrefslogtreecommitdiff
path: root/test/SemaTemplate
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2017-05-10 00:01:13 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2017-05-10 00:01:13 +0000
commit23f58ce5d2805d7f2fb9818f04cb7541319a5307 (patch)
tree654a2afb7cd412b8725b30f1a97b3c341d3719db /test/SemaTemplate
parentd9b4d2283a86ba0ed2a768f3d012ba4ee1859eab (diff)
When instantiating a friend function template, don't forget to inherit default template arguments from other declarations.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@302603 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/SemaTemplate')
-rw-r--r--test/SemaTemplate/default-arguments.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/SemaTemplate/default-arguments.cpp b/test/SemaTemplate/default-arguments.cpp
index d3e249db7e..b5b042c64a 100644
--- a/test/SemaTemplate/default-arguments.cpp
+++ b/test/SemaTemplate/default-arguments.cpp
@@ -207,3 +207,19 @@ Y<false> y2;
} // end ns1
} // end ns PR26134
+
+namespace friends {
+ namespace ns {
+ template<typename> struct A {
+ template<typename> friend void f();
+ template<typename> friend struct X;
+ };
+ template<typename = int> void f(); // expected-warning 0-1{{extension}}
+ template<typename = int> struct X;
+ A<int> a;
+ }
+ namespace ns {
+ void g() { f(); }
+ X<int> *p;
+ }
+}