[clang-rename] add few tests

Thiis patch introduces few additional tests including one case the tool does not handle yet, which should be fixed in the future.

Differential Revision: https://reviews.llvm.org/D22102

llvm-svn: 275545
diff --git a/clang-tools-extra/test/clang-rename/FunctionMacro.cpp b/clang-tools-extra/test/clang-rename/FunctionMacro.cpp
new file mode 100644
index 0000000..1cdac27
--- /dev/null
+++ b/clang-tools-extra/test/clang-rename/FunctionMacro.cpp
@@ -0,0 +1,21 @@
+// RUN: cat %s > %t.cpp
+// RUN: clang-rename -offset=199 -new-name=macro_function %t.cpp -i --
+// RUN: sed 's,//.*,,' %t.cpp | FileCheck %s
+
+#define moo foo // CHECK: #define moo macro_function
+
+int foo() {     // CHECK: int macro_function() {
+  return 42;
+}
+
+void boo(int value) {}
+
+void qoo() {
+  foo();        // CHECK: macro_function();
+  boo(foo());   // CHECK: boo(macro_function());
+  moo();
+  boo(moo());
+}
+
+// Use grep -FUbo 'foo;' <file> to get the correct offset of foo when changing
+// this file.
diff --git a/clang-tools-extra/test/clang-rename/Namespace.cpp b/clang-tools-extra/test/clang-rename/Namespace.cpp
new file mode 100644
index 0000000..5eea4a6
--- /dev/null
+++ b/clang-tools-extra/test/clang-rename/Namespace.cpp
@@ -0,0 +1,14 @@
+// RUN: cat %s > %t.cpp
+// RUN: clang-rename -offset=143 -new-name=llvm %t.cpp -i --
+// RUN: sed 's,//.*,,' %t.cpp | FileCheck %s
+
+namespace foo { // CHECK: namespace llvm {
+  int x;
+}
+
+void boo() {
+  foo::x = 42;  // CHECK: llvm::x = 42;
+}
+
+// Use grep -FUbo 'foo;' <file> to get the correct offset of foo when changing
+// this file.
diff --git a/clang-tools-extra/test/clang-rename/TemplateTypename.cpp b/clang-tools-extra/test/clang-rename/TemplateTypename.cpp
new file mode 100644
index 0000000..c7143a1
--- /dev/null
+++ b/clang-tools-extra/test/clang-rename/TemplateTypename.cpp
@@ -0,0 +1,11 @@
+// Currently unsupported test.
+// FIXME: clang-rename should be able to rename template parameters correctly.
+
+template <typename T>
+T foo(T arg, T& ref, T* ptr) {
+  T value;
+  int number = 42;
+  value = (T)number;
+  value = static_cast<T>(number);
+  return value;
+}
diff --git a/clang-tools-extra/test/clang-rename/UserDefinedConversion.cpp b/clang-tools-extra/test/clang-rename/UserDefinedConversion.cpp
new file mode 100644
index 0000000..9e5899c
--- /dev/null
+++ b/clang-tools-extra/test/clang-rename/UserDefinedConversion.cpp
@@ -0,0 +1,12 @@
+// Currently unsupported test.
+// FIXME: clang-rename should handle conversions from a class type to another
+// type.
+
+class Foo {};             // CHECK: class Bar {};
+
+class Baz {               // CHECK: class Bar {
+  operator Foo() const {  // CHECK: operator Bar() const {
+    Foo foo;              // CHECK: Bar foo;
+    return foo;
+  }
+};
diff --git a/clang-tools-extra/test/clang-rename/VariableMacro.cpp b/clang-tools-extra/test/clang-rename/VariableMacro.cpp
new file mode 100644
index 0000000..2a0cd87
--- /dev/null
+++ b/clang-tools-extra/test/clang-rename/VariableMacro.cpp
@@ -0,0 +1,18 @@
+// RUN: cat %s > %t.cpp
+// RUN: clang-rename -offset=208 -new-name=Z %t.cpp -i --
+// RUN: sed 's,//.*,,' %t.cpp | FileCheck %s
+
+#define Y X // CHECK: #define Y Z
+
+void foo(int value) {}
+
+void macro() {
+  int X;    // CHECK: int Z;
+  X = 42;   // CHECK: Z = 42;
+  Y -= 0;
+  foo(X);   // CHECK: foo(Z);
+  foo(Y);
+}
+
+// Use grep -FUbo 'foo;' <file> to get the correct offset of foo when changing
+// this file.