Hi everyone,<div><br></div><div>While it would be nice for everyone to start using C++11 right away, there is a huge volume of existing code that could also benefit from the new features. Just this week, someone offered a tool to add the override keyword to methods missing it, and I think we can expect more C++11-related refactoring tools in the near future. I think it would be a good idea to talk about how to coordinate similar efforts, which tools we would like to implement, what these tools should look like, and so on. As I'm new to Clang, your input will be especially useful for me, but a general discussion would probably benefit everyone working on something similar.</div>

<div><br></div><div>Desirable features of a source translation system include:</div><div> - Permitting work on parallel migration tools without blocking in either direction.</div><div> - A system for naming these tools and optionally turning them off or on. This means we would need a system to resolve the order of changes should they interact.</div>
<div> - A subsystem for setting parameters of these tools.</div>
<div> - A possible interactive mode for decisions a tool can't make well (e.g. generated variable naming). This would be the first interactive component of Clang, I'm told.<br> - A standard interface for these tools (e.g. they should be implemented as a FrontendAction, return tooling::Replacements, and can require that no errors occur during syntax checking).</div>

<div> - A standard testing convention (e.g. both tests expecting conversions and tests expecting no change, to be run on the FrontendAction).</div><div><br></div><div>In particular, I am working on a tool to convert existing C++ for loops to take advantage of the new C++11 range-based syntax. I can imagine similar tools to replace const with constexpr, macro hacks with static_assert, and potentially other common refactorings.</div>
<div>
<br></div><div>Thoughts? Suggestions?</div><div><br></div><div>-Sam</div>