Index: clang-tools-extra/trunk/clang-tidy/boost/UseToStringCheck.cpp =================================================================== --- clang-tools-extra/trunk/clang-tidy/boost/UseToStringCheck.cpp +++ clang-tools-extra/trunk/clang-tidy/boost/UseToStringCheck.cpp @@ -64,7 +64,7 @@ Diag << FixItHint::CreateReplacement( CharSourceRange::getCharRange(Call->getLocStart(), - Call->getArg(0)->getExprLoc()), + Call->getArg(0)->getLocStart()), (llvm::Twine("std::to_") + StringType + "(").str()); } Index: clang-tools-extra/trunk/test/clang-tidy/boost-use-to-string.cpp =================================================================== --- clang-tools-extra/trunk/test/clang-tidy/boost-use-to-string.cpp +++ clang-tools-extra/trunk/test/clang-tidy/boost-use-to-string.cpp @@ -27,7 +27,7 @@ // CHECK-FIXES: auto xa = std::to_string(5); auto z = boost::lexical_cast(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 @@ bool j; fun(boost::lexical_cast(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(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(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(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(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(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 @@ // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: use std::to_wstring instead of boost::lexical_cast [boost-use-to-string] // CHECK-FIXES: fun(std::to_wstring(a)); fun(boost::lexical_cast(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(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(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(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(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 @@ } const auto glob = boost::lexical_cast(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 void string_as_T(T t = T()) { boost::lexical_cast(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(42); @@ -137,7 +137,7 @@ 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 @@ string_as_T(); string_as_T(); } + +struct Fields { + int integer; + float floating; + Fields* wierd; + const int &getConstInteger() const {return integer;} +}; + +void testFields() { + Fields fields; + auto s1 = boost::lexical_cast(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(fields.floating); + auto s3 = boost::lexical_cast(fields.wierd); + auto s4 = boost::lexical_cast(fields.getConstInteger()); + // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: use std::to_string + // CHECK-FIXES: auto s4 = std::to_string(fields.getConstInteger()); +}