summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRoberto Raggi <qtc-committer@nokia.com>2009-01-06 15:23:59 +0100
committerRoberto Raggi <qtc-committer@nokia.com>2009-01-06 15:23:59 +0100
commitdce0855fc67ee1d2512f4994c818600908e23848 (patch)
treed7cc8805529580c60232b59d3c53cbea7441930c /tests
parente43e09ee5ff43ef69c60b8a12f66c166c6f44272 (diff)
downloadqt-creator-dce0855fc67ee1d2512f4994c818600908e23848.tar.gz
Show how to replace AST nodes.
Diffstat (limited to 'tests')
-rw-r--r--tests/manual/cplusplus/main.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/tests/manual/cplusplus/main.cpp b/tests/manual/cplusplus/main.cpp
index 019683f061..b8a8e32870 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[])