Imported Upstream version 6.10.0.49

Former-commit-id: 1d6753294b2993e1fbf92de9366bb9544db4189b
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2020-01-16 16:38:04 +00:00
parent d94e79959b
commit 468663ddbb
48518 changed files with 2789335 additions and 61176 deletions

View File

@@ -0,0 +1,5 @@
namespace std {
class STD {};
}
using namespace std;

View File

@@ -0,0 +1,37 @@
// RUN: clang-change-namespace -old_namespace "na::nb" -new_namespace "x::y" --file_pattern ".*" %s -- -std=c++11 | sed 's,// CHECK.*,,' | FileCheck %s
template <class T>
class function;
template <class R, class... ArgTypes>
class function<R(ArgTypes...)> {
public:
template <typename Functor>
function(Functor f) {}
R operator()(ArgTypes...) const {}
};
namespace x {
// CHECK: namespace x {
class X {};
}
namespace na {
namespace nb {
// CHECK: namespace x {
// CHECK-NEXT: namespace y {
void f(function<void(int)> func, int param) { func(param); }
void g() { f([](int x) {}, 1); }
// x::X in function type parameter list will have translation unit context, so
// we simply replace it with fully-qualified name.
using TX = function<x::X(x::X)>;
// CHECK: using TX = function<X(x::X)>;
class A {};
using TA = function<A(A)>;
// CHECK: using TA = function<A(A)>;
// CHECK: } // namespace y
// CHECK-NEXT: } // namespace x
}
}

View File

@@ -0,0 +1,29 @@
// RUN: cp %S/macro.cpp %T/macro.cpp
// RUN: echo "#define USING using na::nc::X" > %T/macro.h
//
// RUN: clang-change-namespace -old_namespace "na::nb" -new_namespace "x::y" --file_pattern "macro.cpp" --i %T/macro.cpp --
// RUN: FileCheck -input-file=%T/macro.cpp -check-prefix=CHECK-CC %s
// RUN: FileCheck -input-file=%T/macro.h -check-prefix=CHECK-HEADER %s
//
// RUN: cp %S/macro.cpp %T/macro.cpp
// RUN: echo "#define USING using na::nc::X" > %T/macro.h
// RUN: clang-change-namespace -old_namespace "na::nb" -new_namespace "x::y" --file_pattern ".*" --i %T/macro.cpp --
// RUN: FileCheck -input-file=%T/macro.cpp -check-prefix=CHECK-CC %s
// RUN: FileCheck -input-file=%T/macro.h -check-prefix=CHECK-CHANGED-HEADER %s
#include "macro.h"
namespace na { namespace nc { class X{}; } }
namespace na {
namespace nb {
USING;
}
}
// CHECK-CC: namespace x {
// CHECK-CC: namespace y {
// CHECK-CC: USING;
// CHECK-CC: } // namespace y
// CHECK-CC: } // namespace x
// CHECK-HEADER: #define USING using na::nc::X
// CHECK-CHANGED-HEADER: #define USING using ::na::nc::X

View File

@@ -0,0 +1,10 @@
// RUN: clang-change-namespace -old_namespace "na::nb" -new_namespace "x::y" --file_pattern ".*" %s -- | sed 's,// CHECK.*,,' | FileCheck %s
// CHECK: namespace x {
// CHECK-NEXT: namespace y {
namespace na {
namespace nb {
class A {};
// CHECK: } // namespace y
// CHECK-NEXT: } // namespace x
}
}

View File

@@ -0,0 +1,19 @@
// RUN: echo "^std::.*$" > %T/white-list.txt
// RUN: clang-change-namespace -old_namespace "na::nb" -new_namespace "x::y" --file_pattern ".*" --whitelist_file %T/white-list.txt %s -- | sed 's,// CHECK.*,,' | FileCheck %s
#include "Inputs/fake-std.h"
// CHECK: namespace x {
// CHECK-NEXT: namespace y {
namespace na {
namespace nb {
void f() {
std::STD x1;
STD x2;
// CHECK: {{^}} std::STD x1;{{$}}
// CHECK-NEXT: {{^}} STD x2;{{$}}
}
// CHECK: } // namespace y
// CHECK-NEXT: } // namespace x
}
}