[clang-tools-extra] r274001 - [clang-tidy] boost-use-to-string arg expr location bugfix
Piotr Padlewski via cfe-commits
cfe-commits at lists.llvm.org
Tue Jun 28 01:16:24 PDT 2016
Author: prazek
Date: Tue Jun 28 03:16:20 2016
New Revision: 274001
URL: http://llvm.org/viewvc/llvm-project?rev=274001&view=rev
Log:
[clang-tidy] boost-use-to-string arg expr location bugfix
Summary: getExprLoc returns location after dot for member call.
Reviewers: alexfh, sbenza, hokein
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D21642
Modified:
clang-tools-extra/trunk/clang-tidy/boost/UseToStringCheck.cpp
clang-tools-extra/trunk/test/clang-tidy/boost-use-to-string.cpp
Modified: clang-tools-extra/trunk/clang-tidy/boost/UseToStringCheck.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy/boost/UseToStringCheck.cpp?rev=274001&r1=274000&r2=274001&view=diff
==============================================================================
--- clang-tools-extra/trunk/clang-tidy/boost/UseToStringCheck.cpp (original)
+++ clang-tools-extra/trunk/clang-tidy/boost/UseToStringCheck.cpp Tue Jun 28 03:16:20 2016
@@ -64,7 +64,7 @@ void UseToStringCheck::check(const Match
Diag << FixItHint::CreateReplacement(
CharSourceRange::getCharRange(Call->getLocStart(),
- Call->getArg(0)->getExprLoc()),
+ Call->getArg(0)->getLocStart()),
(llvm::Twine("std::to_") + StringType + "(").str());
}
Modified: clang-tools-extra/trunk/test/clang-tidy/boost-use-to-string.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/clang-tidy/boost-use-to-string.cpp?rev=274001&r1=274000&r2=274001&view=diff
==============================================================================
--- clang-tools-extra/trunk/test/clang-tidy/boost-use-to-string.cpp (original)
+++ clang-tools-extra/trunk/test/clang-tidy/boost-use-to-string.cpp Tue Jun 28 03:16:20 2016
@@ -27,7 +27,7 @@ void test_to_string1() {
// CHECK-FIXES: auto xa = std::to_string(5);
auto z = boost::lexical_cast<std::string>(42LL);
- // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: use std::to_string {{..}}
+ // CHECK-MESSAGES: :[[@LINE-1]]:12: warning: use std::to_string
// CHECK-FIXES: auto z = std::to_string(42LL);
// this should not trigger
@@ -49,22 +49,22 @@ void test_to_string2() {
bool j;
fun(boost::lexical_cast<std::string>(a));
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_string {{..}}
+ // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_string
// CHECK-FIXES: fun(std::to_string(a));
fun(boost::lexical_cast<std::string>(b));
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_string {{..}}
+ // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_string
// CHECK-FIXES: fun(std::to_string(b));
fun(boost::lexical_cast<std::string>(c));
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_string {{..}}
+ // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_string
// CHECK-FIXES: fun(std::to_string(c));
fun(boost::lexical_cast<std::string>(d));
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_string {{..}}
+ // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_string
// CHECK-FIXES: fun(std::to_string(d));
fun(boost::lexical_cast<std::string>(e));
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_string {{..}}
+ // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_string
// CHECK-FIXES: fun(std::to_string(e));
fun(boost::lexical_cast<std::string>(f));
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_string {{..}}
+ // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_string
// CHECK-FIXES: fun(std::to_string(f));
// No change for floating numbers.
@@ -93,19 +93,19 @@ void test_to_wstring() {
// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_wstring instead of boost::lexical_cast<std::wstring> [boost-use-to-string]
// CHECK-FIXES: fun(std::to_wstring(a));
fun(boost::lexical_cast<std::wstring>(b));
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_wstring {{..}}
+ // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_wstring
// CHECK-FIXES: fun(std::to_wstring(b));
fun(boost::lexical_cast<std::wstring>(c));
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_wstring {{..}}
+ // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_wstring
// CHECK-FIXES: fun(std::to_wstring(c));
fun(boost::lexical_cast<std::wstring>(d));
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_wstring {{..}}
+ // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_wstring
// CHECK-FIXES: fun(std::to_wstring(d));
fun(boost::lexical_cast<std::wstring>(e));
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_wstring {{..}}
+ // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_wstring
// CHECK-FIXES: fun(std::to_wstring(e));
fun(boost::lexical_cast<std::wstring>(f));
- // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_wstring {{..}}
+ // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_wstring
// CHECK-FIXES: fun(std::to_wstring(f));
// No change for floating numbers
@@ -117,13 +117,13 @@ void test_to_wstring() {
}
const auto glob = boost::lexical_cast<std::string>(42);
-// CHECK-MESSAGES: :[[@LINE-1]]:19: warning: use std::to_string{{..}}
+// CHECK-MESSAGES: :[[@LINE-1]]:19: warning: use std::to_string
// CHECK-FIXES: const auto glob = std::to_string(42);
template <typename T>
void string_as_T(T t = T()) {
boost::lexical_cast<std::string>(42);
- // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use std::to_string{{..}}
+ // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use std::to_string
// CHECK-FIXES: std::to_string(42);
boost::lexical_cast<T>(42);
@@ -137,7 +137,7 @@ void string_as_T(T t = T()) {
void no_fixup_inside_macro() {
my_to_string(12);
- // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use std::to_string{{..}}
+ // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: use std::to_string
}
void no_warnings() {
@@ -147,3 +147,23 @@ void no_warnings() {
string_as_T<int>();
string_as_T<std::string>();
}
+
+struct Fields {
+ int integer;
+ float floating;
+ Fields* wierd;
+ const int &getConstInteger() const {return integer;}
+};
+
+void testFields() {
+ Fields fields;
+ auto s1 = boost::lexical_cast<std::string>(fields.integer);
+ // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: use std::to_string
+ // CHECK-FIXES: auto s1 = std::to_string(fields.integer);
+
+ auto s2 = boost::lexical_cast<std::string>(fields.floating);
+ auto s3 = boost::lexical_cast<std::string>(fields.wierd);
+ auto s4 = boost::lexical_cast<std::string>(fields.getConstInteger());
+ // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: use std::to_string
+ // CHECK-FIXES: auto s4 = std::to_string(fields.getConstInteger());
+}
More information about the cfe-commits
mailing list