summaryrefslogtreecommitdiffstats
path: root/docs/InternalsManual.rst
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2014-07-07 00:50:39 +0000
committerNico Weber <nicolasweber@gmx.de>2014-07-07 00:50:39 +0000
commitd044b4fcaa7558afdf097f3a227918313463812c (patch)
treeed4f09375d9907492ea851dbfbe5cc6b8a6787a2 /docs/InternalsManual.rst
parent2a5e840d9f2f24dcf99f2471789120b5e811e01a (diff)
Update internals manual on how to add AST nodes.
StmtDumper.cpp is called ASTDumper.cpp these days, and usually works well for new AST nodes without changes. There's now DataRecursiveASTVisitor in addition to RecursiveASTVisitor, and serialization wasn't mentioned. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@212426 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs/InternalsManual.rst')
-rw-r--r--docs/InternalsManual.rst7
1 files changed, 4 insertions, 3 deletions
diff --git a/docs/InternalsManual.rst b/docs/InternalsManual.rst
index 5830a7e506..8e047dbdae 100644
--- a/docs/InternalsManual.rst
+++ b/docs/InternalsManual.rst
@@ -1852,13 +1852,14 @@ are similar.
* Make sure that ``children()`` visits all of the subexpressions. This is
important for a number of features (e.g., IDE support, C++ variadic
templates). If you have sub-types, you'll also need to visit those
- sub-types in the ``RecursiveASTVisitor``.
- * Add printing support (``StmtPrinter.cpp``) and dumping support
- (``StmtDumper.cpp``) for your expression.
+ sub-types in ``RecursiveASTVisitor`` and ``DataRecursiveASTVisitor``.
+ * Add printing support (``StmtPrinter.cpp``) for your expression.
* Add profiling support (``StmtProfile.cpp``) for your AST node, noting the
distinguishing (non-source location) characteristics of an instance of
your expression. Omitting this step will lead to hard-to-diagnose
failures regarding matching of template declarations.
+ * Add serialization support (``ASTReaderStmt.cpp``, ``ASTWriterStmt.cpp``)
+ for your AST node.
#. Teach semantic analysis to build your AST node. At this point, you can wire
up your ``Sema::BuildXXX`` function to actually create your AST. A few