Index: tools/clang/value_cleanup/ListValueRewriter.cpp |
diff --git a/tools/clang/value_cleanup/ListValueRewriter.cpp b/tools/clang/value_cleanup/ListValueRewriter.cpp |
index d6c5cf233688e1de117bfc968c198708e6591e0a..ce27dd1f5b41368ddbf1ac5eb19955ae67d3bee2 100644 |
--- a/tools/clang/value_cleanup/ListValueRewriter.cpp |
+++ b/tools/clang/value_cleanup/ListValueRewriter.cpp |
@@ -32,8 +32,11 @@ void ListValueRewriter::AppendCallback::run( |
auto* newExpr = result.Nodes.getNodeAs<clang::CXXNewExpr>("newExpr"); |
auto* argExpr = result.Nodes.getNodeAs<clang::Expr>("argExpr"); |
+ // Note that for the end loc, we use the expansion loc: the argument might be |
+ // a macro like true and false. |
clang::CharSourceRange pre_arg_range = clang::CharSourceRange::getCharRange( |
- newExpr->getLocStart(), argExpr->getLocStart()); |
+ newExpr->getLocStart(), |
+ result.SourceManager->getExpansionLoc(argExpr->getLocStart())); |
replacements_->emplace(*result.SourceManager, pre_arg_range, ""); |
clang::CharSourceRange post_arg_range = |