<div dir="ltr">You can use "llvm::toString(std::move(Err))" to convert the returned error to string. <div><br></div><div>Thanks for pointing this out :) I'll mention this in the doc.</div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Nov 15, 2016 at 7:40 PM Steven Lu <<a href="mailto:stevenlu443@gmail.com">stevenlu443@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg">I do have one more question. <div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">The return value of add() is an llvm::Error. </div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">I'm now finally able to compile the code, but I'm having a ton of trouble figuring out how to print such an error to a string stream of any kind. Google is no help here. </div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Thanks!</div></div><div class="gmail_extra gmail_msg"><br class="gmail_msg"><div class="gmail_quote gmail_msg">On Mon, Nov 14, 2016 at 4:06 PM, Steven Lu <span dir="ltr" class="gmail_msg"><<a href="mailto:stevenlu443@gmail.com" class="gmail_msg" target="_blank">stevenlu443@gmail.com</a>></span> wrote:<br class="gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg">Hi Eric, <div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Thanks for clarifying. The only confusion I have is that previously the API was easier to use. Now I have to call Replacement.getFilePath() and explicitly index the filename map. It feels almost like maybe instead of getReplacements() returning a std::map maybe this could be (yet another) class so we can continue to have this straightforward interface.<br class="gmail_msg"></div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">It also prompts me to wonder what other use cases that this change helps with. </div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">As for doc I'm sure that just adding a note of what you said (use Replacement.getFilePath() to index to the map) would have been enough to get me there. I hadn't realized that Replacement could fetch the file path. </div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Thanks</div></div><div class="m_-932104846084891772HOEnZb gmail_msg"><div class="m_-932104846084891772h5 gmail_msg"><div class="gmail_extra gmail_msg"><br class="gmail_msg"><div class="gmail_quote gmail_msg">On Mon, Nov 14, 2016 at 6:30 AM, Eric Liu <span dir="ltr" class="gmail_msg"><<a href="mailto:ioeric@google.com" class="gmail_msg" target="_blank">ioeric@google.com</a>></span> wrote:<br class="gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg">A common way is to use the file path in a replacement, i.e. `Replaces[R.getFilePath()].add(R)`. Note that <a href="https://github.com/llvm-mirror/clang/blob/master/include/clang/Tooling/Core/Replacement.h#L146" class="gmail_msg" target="_blank">clang::tooling::Replacements</a> is now implemented as a class instead of a std::set.<div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg"><span style="font-size:12.8px" class="gmail_msg">In general, `formatAndApplyAllReplacements` is a function you would use to apply changes while format changed code *after* you've got all replacements</span>. A sample usage can be found in <a href="https://github.com/llvm-mirror/clang-tools-extra/blob/master/clang-move/tool/ClangMoveMain.cpp#L137" class="gmail_msg" target="_blank">clang-move</a>. And I think the interface's comment does explain its purpose. Which specific part did you find confusing? I'm happy to improve the doc :)</div><span class="m_-932104846084891772m_-4445786945806028673HOEnZb gmail_msg"><font color="#888888" class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">- Eric</div></font></span><div class="gmail_msg"><div class="m_-932104846084891772m_-4445786945806028673h5 gmail_msg"><div class="gmail_msg"><div class="gmail_quote gmail_msg"><div dir="ltr" class="gmail_msg">On Mon, Nov 14, 2016 at 12:04 PM Manuel Klimek <<a href="mailto:klimek@google.com" class="gmail_msg" target="_blank">klimek@google.com</a>> wrote:<br class="gmail_msg"></div><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg">+eric </div><div dir="ltr" class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg"><br class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg"><br class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg"><div class="gmail_quote m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg"><div dir="ltr" class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg">On Sat, Nov 12, 2016 at 10:45 AM Steven Lu via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg" target="_blank">cfe-dev@lists.llvm.org</a>> wrote:<br class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg"></div><blockquote class="gmail_quote m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg"><span style="font-size:12.8px" class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg">I've updated clang from revision 254425 to 286122, and RefactoringTool::</span><span style="font-size:12.8px" class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg">getReplacements() now produces a map of files to replacements. </span><br style="font-size:12.8px" class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg"><br style="font-size:12.8px" class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg"><span style="font-size:12.8px" class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg">My original code implements a MatchFinder::MatchCallback which takes a pointer to the return value of RefactoringTool::</span><span style="font-size:12.8px" class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg">getReplacements() and simply inserts Replacements, now it is not clear how I am to perform the insertion, I cannot tell now if there is some canonical way to determine the filename string to save a particular Replacement under. </span><br style="font-size:12.8px" class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg"><br style="font-size:12.8px" class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg"><span style="font-size:12.8px" class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg">I have also found the function formatAndApplyAllReplacements which I'm having trouble finding doc/instructions for and seems to be a highest-level function that I should use, but it doesnt seem to help address this problem. </span><br style="font-size:12.8px" class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg"><div style="font-size:12.8px" class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg"><br class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg"></div><div style="font-size:12.8px" class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg">I wonder if someone could do a quick rundown of how to use the interface in a proper way. </div><div style="font-size:12.8px" class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg"><br class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg"></div><div style="font-size:12.8px" class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg">Thanks</div></div>
_______________________________________________<br class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg">
cfe-dev mailing list<br class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg">
<a href="mailto:cfe-dev@lists.llvm.org" class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg" target="_blank">cfe-dev@lists.llvm.org</a><br class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br class="m_-932104846084891772m_-4445786945806028673m_93108965231033089gmail_msg gmail_msg">
</blockquote></div></div></blockquote></div></div></div></div></div>
</blockquote></div><br class="gmail_msg"></div>
</div></div></blockquote></div><br class="gmail_msg"></div>
</blockquote></div>