mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-30 10:25:04 +01:00
Refactor Matcher code to reduce per-Matcher boilerplate (#615)
This is in part to eliminate the "sm" and "lang_opts" variables that received comment, but also cuts back on the use of auto.
This commit is contained in:
@@ -4,28 +4,31 @@
|
||||
|
||||
#include "migrate_cpp/cpp_refactoring/matcher.h"
|
||||
|
||||
namespace ct = ::clang::tooling;
|
||||
#include "clang/Basic/SourceManager.h"
|
||||
|
||||
namespace Carbon {
|
||||
|
||||
void Matcher::AddReplacement(const clang::SourceManager& sm,
|
||||
clang::CharSourceRange range,
|
||||
void Matcher::AddReplacement(clang::CharSourceRange range,
|
||||
llvm::StringRef replacement_text) {
|
||||
if (!range.isValid()) {
|
||||
// Invalid range.
|
||||
return;
|
||||
}
|
||||
if (sm.getDecomposedLoc(range.getBegin()).first !=
|
||||
sm.getDecomposedLoc(range.getEnd()).first) {
|
||||
const auto& source_manager = GetSourceManager();
|
||||
if (source_manager.getDecomposedLoc(range.getBegin()).first !=
|
||||
source_manager.getDecomposedLoc(range.getEnd()).first) {
|
||||
// Range spans macro expansions.
|
||||
return;
|
||||
}
|
||||
if (sm.getFileID(range.getBegin()) != sm.getFileID(range.getEnd())) {
|
||||
if (source_manager.getFileID(range.getBegin()) !=
|
||||
source_manager.getFileID(range.getEnd())) {
|
||||
// Range spans files.
|
||||
return;
|
||||
}
|
||||
|
||||
auto rep = ct::Replacement(sm, sm.getExpansionRange(range), replacement_text);
|
||||
auto rep = clang::tooling::Replacement(
|
||||
source_manager, source_manager.getExpansionRange(range),
|
||||
replacement_text);
|
||||
auto entry = replacements->find(std::string(rep.getFilePath()));
|
||||
if (entry == replacements->end()) {
|
||||
// The replacement was in a file which isn't being updated, such as a system
|
||||
@@ -33,7 +36,7 @@ void Matcher::AddReplacement(const clang::SourceManager& sm,
|
||||
return;
|
||||
}
|
||||
|
||||
auto err = entry->second.add(rep);
|
||||
llvm::Error err = entry->second.add(rep);
|
||||
if (err) {
|
||||
llvm::errs() << "Error with replacement `" << rep.toString()
|
||||
<< "`: " << llvm::toString(std::move(err)) << "\n";
|
||||
|
||||
Reference in New Issue
Block a user