<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><cc'ing cfe-dev><div><br><div><div>On Apr 20, 2008, at 7:20 PM, <a href="mailto:pingu219@gmail.com">pingu219@gmail.com</a> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><font color="#888888"></font>Thanks for the reply and sorry for being a little vague. For the purposes of refactoring ideally the refactoring tool shouldn't work on fully preprocessed code output which would mean all included files merged into a single unit, preprocessor directives and comments taken out etc. Also it would raise the issue of what happens if the user modifies preprocessed code that was actually part of a macro before. There is also a problem with conditional compilation where you can't really just evaluate one conditional branch otherwise refactoring might break the program too. <br> <br>The conditional compilation problem may be too big for me to handle for now but I was wondering if Clang preserves preprocessor directives like macros in its own internal representation so that if the user tries to perform a refactoring which would affect the correctness of a macro, the program would be able to pick that up or maybe to introduce changes to the macro definition as well. Also if it's possible for included files to be represented separately so to speak. It was mentioned that clang may be ideal for refactoring so I was wondering how far support for refactoring extended.</blockquote><div><br class="webkit-block-placeholder"></div>clang does not preserve preprocessing directives in the AST, as this is not possible to do in general.  It does indicate whether tokens came from a preprocessor expansion or not though.</div><div><br class="webkit-block-placeholder"></div><div>-Chris</div><div><br></div></div></body></html>