xref: /llvm-project/clang-tools-extra/test/clang-change-namespace/lambda-function.cpp (revision 5f5a74582f8abb2935f9a6f6df3a55dc825f5412)
1 // RUN: clang-change-namespace -old_namespace "na::nb" -new_namespace "x::y" --file_pattern ".*" %s -- -std=c++11 | sed 's,// CHECK.*,,' | FileCheck %s
2 
3 template <class T>
4 class function;
5 template <class R, class... ArgTypes>
6 class function<R(ArgTypes...)> {
7 public:
8   template <typename Functor>
function(Functor f)9   function(Functor f) {}
operator ()(ArgTypes...) const10   R operator()(ArgTypes...) const {}
11 };
12 
13 namespace x {
14 // CHECK: namespace x {
15 class X {};
16 }
17 
18 namespace na {
19 namespace nb {
20 // CHECK: namespace x {
21 // CHECK-NEXT: namespace y {
f(function<void (int)> func,int param)22 void f(function<void(int)> func, int param) { func(param); }
__anonae7d723a0102(int x) 23 void g() { f([](int x) {}, 1); }
24 
25 // x::X in function type parameter list will have translation unit context, so
26 // we simply replace it with fully-qualified name.
27 using TX = function<x::X(x::X)>;
28 // CHECK: using TX = function<X(x::X)>;
29 
30 class A {};
31 using TA = function<A(A)>;
32 // CHECK: using TA = function<A(A)>;
33 
34 // CHECK: } // namespace y
35 // CHECK-NEXT: } // namespace x
36 }
37 }
38