[PATCH] D34329: [GSoC] Clang AST diffing
Alex Lorenz via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 21 00:28:02 PDT 2017
arphaman added inline comments.
================
Comment at: lib/Tooling/ASTDiff/ASTDiff.cpp:156
+int TreeRoot::getSubtreePostorder(std::vector<NodeId> &Ids, NodeId Root) const {
+ int Leaves = 0;
+ std::function<void(NodeId)> Traverse = [&](NodeId Id) {
----------------
Please use a more descriptive name e.g. `NumLeaves`.
================
Comment at: lib/Tooling/ASTDiff/ASTDiff.cpp:157
+ int Leaves = 0;
+ std::function<void(NodeId)> Traverse = [&](NodeId Id) {
+ const Node &N = getNode(Id);
----------------
you should be able to use `auto` instead of `std::function` here I think.
================
Comment at: lib/Tooling/ASTDiff/ASTDiff.cpp:209
+ if (X->hasQualifier() && X->getQualifier()->getAsIdentifier())
+ Value += std::string(X->getQualifier()->getAsIdentifier()->getName());
+ Value += X->getDecl()->getNameAsString();
----------------
Qualifiers (i.e. `NestedNameSpecifier`s) can contain multiple identifiers (e.g. `foo::bar::`). You should use the `print` method from `NestedNameSpecifier` instead.
================
Comment at: lib/Tooling/ASTDiff/ASTDiff.cpp:226
+ if (auto *X = DTN.get<Stmt>())
+ return Value;
+ if (auto *X = DTN.get<QualType>())
----------------
This `Value` will always be `""`, right? You can just return `""` here then.
================
Comment at: lib/Tooling/ASTDiff/ASTDiff.cpp:755
+ size_t Position;
+ std::tie(Kind, Id1, Id2, Position) = Chg;
+ std::string S;
----------------
Looking at the unpacking here it's probably better to make `Change` a struct with named fields instead of a tuple. You would still be able to use `emplace` to create the changes though.
================
Comment at: lib/Tooling/ASTDiff/ASTDiff.cpp:759
+ case Delete:
+ S = formatv("Delete {0}", T1.showNode(Id1));
+ break;
----------------
You can just get rid of the intermediate `S` here and print directly to `OS` in all cases, e.g.:
`OS << "Delete " << T1.showNode(Id1) << "\n"`
https://reviews.llvm.org/D34329
More information about the cfe-commits
mailing list