
The standard definitions of Refactoring typically does include verifying and ensuring that renames a) properly obey scope and other language rules and b) don't conflict with other names in any other scope. Refactoring does require processing multiple translation units in most cases, I'm not sure why you'd assume it doesn't.
From the definition... from a practical standpoint its easier to allow the changes and let the compiler catch the errors :) I'm fairly certain that there aren't any implementations that actually make guarantees implied in the definition (I'm 95% sure of research prototypes and 50% for industry implementations). Partially automated refactorings are better than no refactorings. I equate it to the study of deadlock detection and prevention in operating systems. It's great in theory, but its just not practical.
Note specifically that 'sed' does not qualify as a refactoring tool - you have to do a lot more semantic analysis of the program to do refactoring safely.
True, neither does grep qualify as a source code analysis tool, but damn it's useful for searching thru text. Hopefully, I'll have some time this semester to look a lot more closely at llvm/clang. I have a feeling that it would still provide a great platform for ad-hoc analysis and transformation. Andrew Sutton asutton@cs.kent.edu