Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 // | 4 // |
| 5 // Changes Blink-style names to Chrome-style names. Currently transforms: | 5 // Changes Blink-style names to Chrome-style names. Currently transforms: |
| 6 // fields: | 6 // fields: |
| 7 // int m_operationCount => int operation_count_ | 7 // int m_operationCount => int operation_count_ |
| 8 // variables (including parameters): | 8 // variables (including parameters): |
| 9 // int mySuperVariable => int my_super_variable | 9 // int mySuperVariable => int my_super_variable |
| 10 // constants: | 10 // constants: |
| (...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 215 }; | 215 }; |
| 216 constexpr char TargetNodeTraits<clang::CXXCtorInitializer>::kName[]; | 216 constexpr char TargetNodeTraits<clang::CXXCtorInitializer>::kName[]; |
| 217 | 217 |
| 218 template <typename DeclNode, typename TargetNode> | 218 template <typename DeclNode, typename TargetNode> |
| 219 class RewriterBase : public MatchFinder::MatchCallback { | 219 class RewriterBase : public MatchFinder::MatchCallback { |
| 220 public: | 220 public: |
| 221 explicit RewriterBase(Replacements* replacements) | 221 explicit RewriterBase(Replacements* replacements) |
| 222 : replacements_(replacements) {} | 222 : replacements_(replacements) {} |
| 223 | 223 |
| 224 void run(const MatchFinder::MatchResult& result) override { | 224 void run(const MatchFinder::MatchResult& result) override { |
| 225 std::string name; | 225 std::string new_name; |
| 226 const DeclNode* decl = result.Nodes.getNodeAs<DeclNode>("decl"); | 226 const DeclNode* decl = result.Nodes.getNodeAs<DeclNode>("decl"); |
| 227 clang::ASTContext* context = result.Context; | 227 clang::ASTContext* context = result.Context; |
| 228 if (!GetNameForDecl(*decl, *context, name)) | 228 if (!GetNameForDecl(*decl, *context, new_name)) |
| 229 return; | 229 return; |
| 230 auto r = replacements_->emplace( | 230 llvm::StringRef old_name = decl->getName(); |
| 231 *result.SourceManager, TargetNodeTraits<TargetNode>::GetRange( | 231 if (old_name == new_name) |
|
dcheng
2016/01/28 06:47:42
I moved this up to reduce the amount of edits emit
| |
| 232 *result.Nodes.getNodeAs<TargetNode>( | 232 return; |
| 233 TargetNodeTraits<TargetNode>::kName)), | 233 clang::CharSourceRange range = TargetNodeTraits<TargetNode>::GetRange( |
| 234 name); | 234 *result.Nodes.getNodeAs<TargetNode>( |
| 235 auto from = decl->getNameAsString(); | 235 TargetNodeTraits<TargetNode>::kName)); |
| 236 auto to = r.first->getReplacementText().str(); | 236 if (range.getBegin().isMacroID() || range.getEnd().isMacroID()) |
| 237 if (from != to) | 237 return; |
| 238 replacement_names_.emplace(std::move(from), std::move(to)); | 238 replacements_->emplace(*result.SourceManager, range, new_name); |
| 239 replacement_names_.emplace(old_name.str(), std::move(new_name)); | |
| 239 } | 240 } |
| 240 | 241 |
| 241 const std::unordered_map<std::string, std::string>& replacement_names() | 242 const std::unordered_map<std::string, std::string>& replacement_names() |
| 242 const { | 243 const { |
| 243 return replacement_names_; | 244 return replacement_names_; |
| 244 } | 245 } |
| 245 | 246 |
| 246 private: | 247 private: |
| 247 Replacements* const replacements_; | 248 Replacements* const replacements_; |
| 248 std::unordered_map<std::string, std::string> replacement_names_; | 249 std::unordered_map<std::string, std::string> replacement_names_; |
| (...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 555 for (const auto& r : replacements) { | 556 for (const auto& r : replacements) { |
| 556 std::string replacement_text = r.getReplacementText().str(); | 557 std::string replacement_text = r.getReplacementText().str(); |
| 557 std::replace(replacement_text.begin(), replacement_text.end(), '\n', '\0'); | 558 std::replace(replacement_text.begin(), replacement_text.end(), '\n', '\0'); |
| 558 llvm::outs() << "r:::" << r.getFilePath() << ":::" << r.getOffset() | 559 llvm::outs() << "r:::" << r.getFilePath() << ":::" << r.getOffset() |
| 559 << ":::" << r.getLength() << ":::" << replacement_text << "\n"; | 560 << ":::" << r.getLength() << ":::" << replacement_text << "\n"; |
| 560 } | 561 } |
| 561 llvm::outs() << "==== END EDITS ====\n"; | 562 llvm::outs() << "==== END EDITS ====\n"; |
| 562 | 563 |
| 563 return 0; | 564 return 0; |
| 564 } | 565 } |
| OLD | NEW |