Implement tooling::Replacements as a class.
Summary: - Implement clang::tooling::Replacements as a class to provide interfaces to control how replacements for a single file are combined and provide guarantee on the order of replacements being applied. - tooling::Replacements only contains replacements for the same file now. Use std::map<std::string, tooling::Replacements> to represent multi-file replacements. - Error handling for the interface change will be improved in followup patches. Reviewers: djasper, klimek Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D21748 llvm-svn: 277335
This commit is contained in:
@@ -127,7 +127,8 @@ public:
|
||||
tooling::Replacements
|
||||
analyze(TokenAnnotator &Annotator,
|
||||
SmallVectorImpl<AnnotatedLine *> &AnnotatedLines,
|
||||
FormatTokenLexer &Tokens, tooling::Replacements &Result) override {
|
||||
FormatTokenLexer &Tokens, tooling::Replacements &) override {
|
||||
tooling::Replacements Result;
|
||||
AffectedRangeMgr.computeAffectedLines(AnnotatedLines.begin(),
|
||||
AnnotatedLines.end());
|
||||
|
||||
@@ -192,9 +193,14 @@ public:
|
||||
DEBUG(llvm::dbgs() << "Replacing imports:\n"
|
||||
<< getSourceText(InsertionPoint) << "\nwith:\n"
|
||||
<< ReferencesText << "\n");
|
||||
Result.insert(tooling::Replacement(
|
||||
auto Err = Result.add(tooling::Replacement(
|
||||
Env.getSourceManager(), CharSourceRange::getCharRange(InsertionPoint),
|
||||
ReferencesText));
|
||||
// FIXME: better error handling. For now, just print error message and skip
|
||||
// the replacement for the release version.
|
||||
if (Err)
|
||||
llvm::errs() << llvm::toString(std::move(Err)) << "\n";
|
||||
assert(!Err);
|
||||
|
||||
return Result;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user