diff --git a/tests/manual/cplusplus/main.cpp b/tests/manual/cplusplus/main.cpp index 019683f0615f2e301046256a8f75d5afdcd4108e..b8a8e328708803de06297b5e659bb3cb093a371e 100644 --- a/tests/manual/cplusplus/main.cpp +++ b/tests/manual/cplusplus/main.cpp @@ -49,6 +49,7 @@ #include <cstdio> #include <cstdlib> #include <iostream> +#include <sstream> class Rewrite { @@ -194,6 +195,19 @@ protected: return false; } + + virtual bool visit(CppCastExpressionAST *ast) { + // Replace the C++ cast expression (e.g. static_cast<foo>(a)) with + // the one generated by the pretty printer. + std::ostringstream o; + PrettyPrinter pp(control(), o); + pp(ast); + remove(ast->firstToken(), ast->lastToken()); + const std::string str = o.str(); + insertTextBefore(ast->firstToken(), str.c_str()); + insertTextBefore(ast->firstToken(), "/* #REF# beautiful cast */ "); + return false; + } }; int main(int argc, char *argv[])