| //===- clang-apply-replacements/ApplyReplacementsTest.cpp |
| //----------------------===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "clang-apply-replacements/Tooling/ApplyReplacements.h" |
| #include "clang/Format/Format.h" |
| #include "gtest/gtest.h" |
| |
| using namespace clang::replace; |
| using namespace llvm; |
| |
| namespace clang { |
| namespace tooling { |
| |
| static TUDiagnostics |
| makeTUDiagnostics(const std::string &MainSourceFile, StringRef DiagnosticName, |
| const DiagnosticMessage &Message, |
| const StringMap<Replacements> &Replacements, |
| StringRef BuildDirectory) { |
| TUDiagnostics TUs; |
| TUs.push_back({MainSourceFile, |
| {{DiagnosticName, |
| Message, |
| Replacements, |
| {}, |
| Diagnostic::Warning, |
| BuildDirectory}}}); |
| return TUs; |
| } |
| |
| // Test to ensure diagnostics with no fixes, will be merged correctly |
| // before applying. |
| TEST(ApplyReplacementsTest, mergeDiagnosticsWithNoFixes) { |
| IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts(new DiagnosticOptions()); |
| DiagnosticsEngine Diagnostics( |
| IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs()), DiagOpts.get()); |
| FileManager Files((FileSystemOptions())); |
| SourceManager SM(Diagnostics, Files); |
| TUReplacements TURs; |
| TUDiagnostics TUs = |
| makeTUDiagnostics("path/to/source.cpp", "diagnostic", {}, {}, "path/to"); |
| FileToChangesMap ReplacementsMap; |
| |
| EXPECT_TRUE(mergeAndDeduplicate(TURs, TUs, ReplacementsMap, SM)); |
| EXPECT_TRUE(ReplacementsMap.empty()); |
| } |
| |
| } // end namespace tooling |
| } // end namespace clang |