Add NamingStyle option to modernize-loop-convert.

Summary: Add an option to specify wich style must be followed when choosing the new index name.

Reviewers: alexfh

Subscribers: cfe-commits, klimek

Differential Revision: http://reviews.llvm.org/D13052

llvm-svn: 248517
diff --git a/clang-tools-extra/test/clang-tidy/modernize-loop-convert-lowercase.cpp b/clang-tools-extra/test/clang-tidy/modernize-loop-convert-lowercase.cpp
new file mode 100644
index 0000000..0b3d735
--- /dev/null
+++ b/clang-tools-extra/test/clang-tidy/modernize-loop-convert-lowercase.cpp
@@ -0,0 +1,77 @@
+// RUN: %python %S/check_clang_tidy.py %s modernize-loop-convert %t \
+// RUN:   -config="{CheckOptions: [{key: modernize-loop-convert.NamingStyle, value: 'lower_case'}]}" \
+// RUN:   -- -std=c++11 -I %S/Inputs/modernize-loop-convert
+
+#include "structures.h"
+
+const int n = 10;
+int arr[n];
+int nums[n];
+
+void naming() {
+  for (int i = 0; i < n; ++i) {
+    printf("%d\n", arr[i]);
+  }
+  // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead [modernize-loop-convert]
+  // CHECK-FIXES: for (auto & elem : arr)
+  // CHECK-FIXES-NEXT: printf("%d\n", elem);
+
+  for (int i = 0; i < n; ++i) {
+    printf("%d\n", nums[i]);
+  }
+  // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead
+  // CHECK-FIXES: for (auto & num : nums)
+  // CHECK-FIXES-NEXT: printf("%d\n", num);
+
+  int num = 0;
+  for (int i = 0; i < n; ++i) {
+    printf("%d\n", nums[i] + num);
+  }
+  // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead
+  // CHECK-FIXES: for (auto & elem : nums)
+  // CHECK-FIXES-NEXT: printf("%d\n", elem + num);
+
+  int elem = 0;
+  for (int i = 0; i < n; ++i) {
+    printf("%d\n", nums[i] + num + elem);
+  }
+  // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead
+  // CHECK-FIXES: for (auto & nums_i : nums)
+  // CHECK-FIXES-NEXT: printf("%d\n", nums_i + num + elem);
+
+  int nums_i = 0;
+  for (int i = 0; i < n; ++i) {
+    printf("%d\n", nums[i] + num + elem + nums_i);
+  }
+  // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead
+  // CHECK-FIXES: for (auto & nums_elem : nums)
+  // CHECK-FIXES-NEXT: printf("%d\n", nums_elem + num + elem + nums_i);
+
+  int nums_elem = 0;
+  for (int i = 0; i < n; ++i) {
+    printf("%d\n", nums[i] + num + elem + nums_i + nums_elem);
+  }
+  // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead
+  // CHECK-FIXES: for (auto & give_me_name_0 : nums)
+  // CHECK-FIXES-NEXT: printf("%d\n", give_me_name_0 + num + elem + nums_i + nums_elem);
+
+  int give_me_name_0 = 0;
+  for (int i = 0; i < n; ++i) {
+    printf("%d\n", nums[i] + num + elem + nums_i + nums_elem + give_me_name_0);
+  }
+  // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead
+  // CHECK-FIXES: for (auto & give_me_name_1 : nums)
+  // CHECK-FIXES-NEXT: printf("%d\n", give_me_name_1 + num + elem + nums_i + nums_elem + give_me_name_0);
+
+  int nums_j = 0;
+  for (int i = 0; i < n; ++i) {
+    for (int j = 0; j < n; ++j) {
+      printf("%d\n", nums[i] + nums[j] + num + elem + nums_i + nums_j + nums_elem);
+    }
+  }
+  // CHECK-MESSAGES: :[[@LINE-5]]:3: warning: use range-based for loop instead
+  // CHECK-MESSAGES: :[[@LINE-5]]:5: warning: use range-based for loop instead
+  // CHECK-FIXES: for (auto & give_me_name_0 : nums)
+  // CHECK-FIXES: for (auto & give_me_name_1 : nums)
+  // CHECK-FIXES-NEXT: printf("%d\n", give_me_name_0 + give_me_name_1 + num + elem + nums_i + nums_j + nums_elem);
+}