diff options
Diffstat (limited to 'clang/lib/Format/QualifierAlignmentFixer.cpp')
-rw-r--r-- | clang/lib/Format/QualifierAlignmentFixer.cpp | 60 |
1 files changed, 5 insertions, 55 deletions
diff --git a/clang/lib/Format/QualifierAlignmentFixer.cpp b/clang/lib/Format/QualifierAlignmentFixer.cpp index ff54fb7..2e3b21c 100644 --- a/clang/lib/Format/QualifierAlignmentFixer.cpp +++ b/clang/lib/Format/QualifierAlignmentFixer.cpp @@ -25,18 +25,13 @@ namespace clang { namespace format { -QualifierAlignmentFixer::QualifierAlignmentFixer( - const Environment &Env, const FormatStyle &Style, StringRef &Code, - ArrayRef<tooling::Range> Ranges, unsigned FirstStartColumn, - unsigned NextStartColumn, unsigned LastStartColumn, StringRef FileName) - : TokenAnalyzer(Env, Style), Code(Code), Ranges(Ranges), - FirstStartColumn(FirstStartColumn), NextStartColumn(NextStartColumn), - LastStartColumn(LastStartColumn), FileName(FileName) { +void addQualifierAlignmentFixerPasses(const FormatStyle &Style, + SmallVectorImpl<AnalyzerPass> &Passes) { std::vector<std::string> LeftOrder; std::vector<std::string> RightOrder; std::vector<tok::TokenKind> ConfiguredQualifierTokens; - PrepareLeftRightOrdering(Style.QualifierOrder, LeftOrder, RightOrder, - ConfiguredQualifierTokens); + prepareLeftRightOrderingForQualifierAlignmentFixer( + Style.QualifierOrder, LeftOrder, RightOrder, ConfiguredQualifierTokens); // Handle the left and right alignment separately. for (const auto &Qualifier : LeftOrder) { @@ -59,51 +54,6 @@ QualifierAlignmentFixer::QualifierAlignmentFixer( } } -std::pair<tooling::Replacements, unsigned> QualifierAlignmentFixer::analyze( - TokenAnnotator & /*Annotator*/, - SmallVectorImpl<AnnotatedLine *> & /*AnnotatedLines*/, - FormatTokenLexer & /*Tokens*/) { - auto Env = Environment::make(Code, FileName, Ranges, FirstStartColumn, - NextStartColumn, LastStartColumn); - if (!Env) - return {}; - std::optional<std::string> CurrentCode; - tooling::Replacements Fixes; - for (size_t I = 0, E = Passes.size(); I < E; ++I) { - std::pair<tooling::Replacements, unsigned> PassFixes = Passes[I](*Env); - auto NewCode = applyAllReplacements( - CurrentCode ? StringRef(*CurrentCode) : Code, PassFixes.first); - if (NewCode) { - Fixes = Fixes.merge(PassFixes.first); - if (I + 1 < E) { - CurrentCode = std::move(*NewCode); - Env = Environment::make( - *CurrentCode, FileName, - tooling::calculateRangesAfterReplacements(Fixes, Ranges), - FirstStartColumn, NextStartColumn, LastStartColumn); - if (!Env) - return {}; - } - } - } - - // Don't make replacements that replace nothing. - tooling::Replacements NonNoOpFixes; - - for (const tooling::Replacement &Fix : Fixes) { - StringRef OriginalCode = Code.substr(Fix.getOffset(), Fix.getLength()); - - if (!OriginalCode.equals(Fix.getReplacementText())) { - auto Err = NonNoOpFixes.add(Fix); - if (Err) { - llvm::errs() << "Error adding replacements : " - << llvm::toString(std::move(Err)) << "\n"; - } - } - } - return {NonNoOpFixes, 0}; -} - static void replaceToken(const SourceManager &SourceMgr, tooling::Replacements &Fixes, const CharSourceRange &Range, std::string NewText) { @@ -612,7 +562,7 @@ LeftRightQualifierAlignmentFixer::analyze( return {Fixes, 0}; } -void QualifierAlignmentFixer::PrepareLeftRightOrdering( +void prepareLeftRightOrderingForQualifierAlignmentFixer( const std::vector<std::string> &Order, std::vector<std::string> &LeftOrder, std::vector<std::string> &RightOrder, std::vector<tok::TokenKind> &Qualifiers) { |