Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Unified Diff: tools/clang/rewrite_to_chrome_style/RewriteToChromeStyle.cpp

Issue 2677483004: Emit edit tracking information from *all* rewriters. (Closed)
Patch Set: It even works this time... Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/clang/rewrite_to_chrome_style/EditTracker.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/clang/rewrite_to_chrome_style/RewriteToChromeStyle.cpp
diff --git a/tools/clang/rewrite_to_chrome_style/RewriteToChromeStyle.cpp b/tools/clang/rewrite_to_chrome_style/RewriteToChromeStyle.cpp
index c0c2ad138dbc5e05e49d5b625e28c63d102a45e4..8fa8ec26b58a62267a1b6b30f63b7986e1144020 100644
--- a/tools/clang/rewrite_to_chrome_style/RewriteToChromeStyle.cpp
+++ b/tools/clang/rewrite_to_chrome_style/RewriteToChromeStyle.cpp
@@ -1039,8 +1039,9 @@ struct TargetNodeTraits<clang::UnresolvedUsingValueDecl> {
template <typename TargetNode>
class RewriterBase : public MatchFinder::MatchCallback {
public:
- explicit RewriterBase(std::set<Replacement>* replacements)
- : replacements_(replacements) {}
+ explicit RewriterBase(std::set<Replacement>* replacements,
+ RenameCategory category)
+ : replacements_(replacements), edit_tracker_(category) {}
const TargetNode& GetTargetNode(const MatchFinder::MatchResult& result) {
const TargetNode* target_node = result.Nodes.getNodeAs<TargetNode>(
@@ -1126,20 +1127,51 @@ class RewriterBase : public MatchFinder::MatchCallback {
edit_tracker_.Add(*result.SourceManager, loc, old_name, new_name);
}
- const EditTracker& edit_tracker() const { return edit_tracker_; }
+ const EditTracker* edit_tracker() const { return &edit_tracker_; }
private:
std::set<Replacement>* const replacements_;
EditTracker edit_tracker_;
};
+template <typename DeclNode>
+RenameCategory GetCategory();
+template <>
+RenameCategory GetCategory<clang::FieldDecl>() {
+ return RenameCategory::kField;
+}
+template <>
+RenameCategory GetCategory<clang::VarDecl>() {
+ return RenameCategory::kVariable;
+}
+template <>
+RenameCategory GetCategory<clang::FunctionDecl>() {
+ return RenameCategory::kFunction;
+}
+template <>
+RenameCategory GetCategory<clang::CXXMethodDecl>() {
+ return RenameCategory::kFunction;
+}
+template <>
+RenameCategory GetCategory<clang::EnumConstantDecl>() {
+ return RenameCategory::kEnumValue;
+}
+template <>
+RenameCategory GetCategory<clang::NamedDecl>() {
+ return RenameCategory::kUnresolved;
+}
+template <>
+RenameCategory GetCategory<clang::UsingDecl>() {
+ return RenameCategory::kUnresolved;
+}
+
template <typename DeclNode, typename TargetNode>
class DeclRewriterBase : public RewriterBase<TargetNode> {
public:
using Base = RewriterBase<TargetNode>;
explicit DeclRewriterBase(std::set<Replacement>* replacements)
- : Base(replacements) {}
+ : Base(replacements, GetCategory<DeclNode>()) {}
void run(const MatchFinder::MatchResult& result) override {
const DeclNode* decl = result.Nodes.getNodeAs<DeclNode>("decl");
@@ -1326,7 +1358,7 @@ class UnresolvedRewriterBase : public RewriterBase<TargetNode> {
using Base = RewriterBase<TargetNode>;
explicit UnresolvedRewriterBase(std::set<Replacement>* replacements)
- : RewriterBase<TargetNode>(replacements) {}
+ : RewriterBase<TargetNode>(replacements, RenameCategory::kUnresolved) {}
void run(const MatchFinder::MatchResult& result) override {
const TargetNode& node = Base::GetTargetNode(result);
@@ -1844,13 +1876,32 @@ int main(int argc, const char* argv[]) {
return result;
// Supplemental data for the Blink rename rebase helper.
- // TODO(dcheng): There's a lot of match rewriters missing from this list.
+ std::vector<const EditTracker*> all_edit_trackers{
+ field_decl_rewriter.edit_tracker(),
+ var_decl_rewriter.edit_tracker(),
+ enum_member_decl_rewriter.edit_tracker(),
+ member_rewriter.edit_tracker(),
+ decl_ref_rewriter.edit_tracker(),
+ enum_member_ref_rewriter.edit_tracker(),
+ member_ref_rewriter.edit_tracker(),
+ function_decl_rewriter.edit_tracker(),
+ function_ref_rewriter.edit_tracker(),
+ method_decl_rewriter.edit_tracker(),
+ method_ref_rewriter.edit_tracker(),
+ method_member_rewriter.edit_tracker(),
+ constructor_initializer_rewriter.edit_tracker(),
+ unresolved_lookup_rewriter.edit_tracker(),
+ unresolved_member_rewriter.edit_tracker(),
+ unresolved_dependent_member_rewriter.edit_tracker(),
+ unresolved_using_value_decl_rewriter.edit_tracker(),
+ using_decl_rewriter.edit_tracker(),
+ dependent_scope_decl_ref_expr_rewriter.edit_tracker(),
+ cxx_dependent_scope_member_expr_rewriter.edit_tracker(),
+ gmock_member_rewriter.edit_tracker(),
+ };
llvm::outs() << "==== BEGIN TRACKED EDITS ====\n";
- field_decl_rewriter.edit_tracker().SerializeTo("var", llvm::outs());
- var_decl_rewriter.edit_tracker().SerializeTo("var", llvm::outs());
- enum_member_decl_rewriter.edit_tracker().SerializeTo("enu", llvm::outs());
- function_decl_rewriter.edit_tracker().SerializeTo("fun", llvm::outs());
- method_decl_rewriter.edit_tracker().SerializeTo("fun", llvm::outs());
+ for (const EditTracker* edit_tracker : all_edit_trackers)
+ edit_tracker->SerializeTo(llvm::outs());
llvm::outs() << "==== END TRACKED EDITS ====\n";
// Serialization format is documented in tools/clang/scripts/run_tool.py
« no previous file with comments | « tools/clang/rewrite_to_chrome_style/EditTracker.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698