[PATCH] D34748: [clang-diff] improve mapping accuracy

Alex Lorenz via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Jul 27 04:51:35 PDT 2017


arphaman added a comment.

In general this patch is too big, and combines a lot of changes that could be separated using multiple patches. I've suggested one pre-commit and a new patch so far, but more changes might be required once I see the updated patch.



================
Comment at: include/clang/Tooling/ASTDiff/ASTDiff.h:48
+  bool isLeaf() const { return Children.empty(); }
+  llvm::Optional<const std::string> getQualifiedIdentifier() const;
+  llvm::Optional<const StringRef> getIdentifier() const;
----------------
Redundant `const` in the return type.


================
Comment at: include/clang/Tooling/ASTDiff/ASTDiff.h:49
+  llvm::Optional<const std::string> getQualifiedIdentifier() const;
+  llvm::Optional<const StringRef> getIdentifier() const;
+};
----------------
Redundant `const` in the return type.


================
Comment at: include/clang/Tooling/ASTDiff/ASTDiff.h:58
 
-  // Returns a list of matches.
-  std::vector<Match> getMatches();
-  /// Returns an edit script.
-  std::vector<Change> getChanges();
+  SyntaxTree &SrcTree, &DstTree;
 
----------------
Please Move these fields to the end of the class. Can they be private too?


================
Comment at: lib/Tooling/ASTDiff/ASTDiff.cpp:170
+  // Ignore everything from other files.
+  if (!SrcMgr.isInMainFile(SLoc))
+    return true;
----------------
How will you deal with changes in headers if you limit analysis to main files only? 


================
Comment at: lib/Tooling/ASTDiff/ASTDiff.cpp:694
+
+const StringRef Node::getTypeLabel() const { return getType().asStringRef(); }
+
----------------
Redundant `const` in return type.


================
Comment at: tools/clang-diff/ClangDiff.cpp:28
 static cl::opt<bool>
-    DumpAST("ast-dump",
+    ASTDump("ast-dump",
             cl::desc("Print the internal representation of the AST as JSON."),
----------------
The rename of `DumpAST` to `ASTDump` should be a separate change. Please pre-commit this rename and remove it from the updated patch.


================
Comment at: tools/clang-diff/ClangDiff.cpp:45
 
+static cl::opt<bool> NoCompilationDatabase(
+    "no-compilation-database",
----------------
Can you avoid moving the `NoCompilationDatabase`? This will make the patch clearer.


================
Comment at: tools/clang-diff/ClangDiff.cpp:65
+namespace {
+class ArgumentsAdjustingCompilations : public CompilationDatabase {
+public:
----------------
This is a copy `ArgumentsAdjustingCompilations` from lib/Tooling. You should create a patch that moves existing `ArgumentsAdjustingCompilations` from the implementation file to some header so that it will be accessible by the tool and make this patch depend on the new patch.


================
Comment at: tools/clang-diff/ClangDiff.cpp:224
+  case diff::None:
+  case diff::Delete:
+    break;
----------------
You might want to assert here. We should never have `Delete` in the destination AST, right?


https://reviews.llvm.org/D34748





More information about the cfe-commits mailing list