Index: include/clang/Tooling/Core/Diagnostic.h =================================================================== --- include/clang/Tooling/Core/Diagnostic.h +++ include/clang/Tooling/Core/Diagnostic.h @@ -0,0 +1,100 @@ +//===--- Diagnostic.h - Framework for clang diagnostics tools --*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// \file +// Structures supporting diagnostics and refactorings that span multiple +// translation units. Indicate diagnostics reports and replacements +// suggestions for the analyzed sources. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_TOOLING_CORE_DIAGNOSTIC_H +#define LLVM_CLANG_TOOLING_CORE_DIAGNOSTIC_H + +#include "Replacement.h" +#include "clang/Basic/Diagnostic.h" +#include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/StringMap.h" +#include "llvm/ADT/StringRef.h" +#include + +namespace clang { +namespace tooling { + +/// \brief Represents the diagnostic message with the error message associated +/// and the information on the location of the problem. +struct DiagnosticMessage { + DiagnosticMessage(llvm::StringRef Message = ""); + + /// \brief Constructs a diagnostic message with anoffset to the diagnostic + /// within the file where the problem occured. + /// + /// \param Loc Should be a file location, it is not meaningful for a macro + /// location. + /// + DiagnosticMessage(llvm::StringRef Message, const SourceManager &Sources, + SourceLocation Loc); + std::string Message; + std::string FilePath; + unsigned FileOffset; +}; + +/// \brief Represents the diagnostic with the level of severity and possible +/// fixes to be applied. +struct Diagnostic { + enum Level { + Warning = DiagnosticsEngine::Warning, + Error = DiagnosticsEngine::Error + }; + + Diagnostic() = default; + + Diagnostic(llvm::StringRef DiagnosticName, Level DiagLevel, + StringRef BuildDirectory); + + Diagnostic(llvm::StringRef DiagnosticName, DiagnosticMessage &Message, + llvm::StringMap &Fix, + SmallVector &Notes, Level DiagLevel, + llvm::StringRef BuildDirectory); + + /// \brief Name identifying the Diagnostic. + std::string DiagnosticName; + + /// \brief Message associated to the diagnostic. + DiagnosticMessage Message; + + /// \brief Fixes to apply, grouped by file path. + llvm::StringMap Fix; + + /// \brief Potential notes about the diagnostic. + SmallVector Notes; + + /// \brief Diagnostic level. Can indicate either an error or a warning. + Level DiagLevel; + + /// \brief A build directory of the diagnostic source file. + /// + /// It's an absolute path which is `directory` field of the source file in + /// compilation database. If users don't specify the compilation database + /// directory, it is the current directory where clang-tidy runs. + /// + /// Note: it is empty in unittest. + std::string BuildDirectory; +}; + +/// \brief Collection of Diagnostics generated from a single translation unit. +struct TranslationUnitDiagnostics { + /// Name of the main source for the translation unit. + std::string MainSourceFile; + std::vector Diagnostics; +}; + +} // end namespace tooling +} // end namespace clang +#endif // LLVM_CLANG_TOOLING_CORE_DIAGNOSTIC_H Index: include/clang/Tooling/Core/Replacement.h =================================================================== --- include/clang/Tooling/Core/Replacement.h +++ include/clang/Tooling/Core/Replacement.h @@ -271,12 +271,6 @@ struct TranslationUnitReplacements { /// Name of the main source for the translation unit. std::string MainSourceFile; - - /// A freeform chunk of text to describe the context of the replacements. - /// Will be printed, for example, when detecting conflicts during replacement - /// deduplication. - std::string Context; - std::vector Replacements; }; Index: include/clang/Tooling/DiagnosticsYaml.h =================================================================== --- include/clang/Tooling/DiagnosticsYaml.h +++ include/clang/Tooling/DiagnosticsYaml.h @@ -0,0 +1,95 @@ +//===-- DiagnosticsYaml.h -- Serialiazation for Diagnosticss ---*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// \brief This file defines the structure of a YAML document for serializing +/// diagnostics. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_TOOLING_DIAGNOSTICSYAML_H +#define LLVM_CLANG_TOOLING_DIAGNOSTICSYAML_H + +#include "clang/Tooling/Core/Diagnostic.h" +#include "clang/Tooling/ReplacementsYaml.h" +#include "llvm/Support/YAMLTraits.h" +#include + +LLVM_YAML_IS_SEQUENCE_VECTOR(clang::tooling::Diagnostic) + +namespace llvm { +namespace yaml { + +template <> struct MappingTraits { + /// \brief Helper to (de)serialize a Diagnostic since we don't have direct + /// access to its data members. + class NormalizedDiagnostic { + public: + NormalizedDiagnostic(const IO &) + : DiagLevel(clang::tooling::Diagnostic::Level::Warning) {} + + NormalizedDiagnostic(const IO &, const clang::tooling::Diagnostic &D) + : DiagnosticName(D.DiagnosticName), Message(Message), Fix(D.Fix), + Notes(D.Notes), DiagLevel(D.DiagLevel), + BuildDirectory(D.BuildDirectory) {} + + clang::tooling::Diagnostic denormalize(const IO &) { + return clang::tooling::Diagnostic(DiagnosticName, Message, Fix, Notes, + DiagLevel, BuildDirectory); + } + + std::string DiagnosticName; + clang::tooling::DiagnosticMessage Message; + llvm::StringMap Fix; + SmallVector Notes; + clang::tooling::Diagnostic::Level DiagLevel; + std::string BuildDirectory; + }; + + static void mapping(IO &Io, clang::tooling::Diagnostic &D) { + MappingNormalization Keys( + Io, D); + Io.mapRequired("DiagnosticName", Keys->DiagnosticName); + + // FIXME: Export properly all the different fields + + std::vector Fixes; + for (auto &Replacements : Keys->Fix) { + for (auto &Replacement : Replacements.second) { + Fixes.push_back(Replacement); + } + } + Io.mapRequired("Replacements", Fixes); + for (auto &Fix : Fixes) { + Keys->Fix[Fix.getFilePath()].add(Fix); + } + } +}; + +/// \brief Specialized MappingTraits to describe how a +/// TranslationUnitDiagnostics is (de)serialized. +template <> struct MappingTraits { + static void mapping(IO &Io, clang::tooling::TranslationUnitDiagnostics &Doc) { + Io.mapRequired("MainSourceFile", Doc.MainSourceFile); + std::vector Diagnostics; + for (auto &Diagnostic : Doc.Diagnostics) { + // FIXME: Export all diagnostics, not just the ones with fixes. + // Update MappingTraits::mapping. + if (Diagnostic.Fix.size() > 0) { + Diagnostics.push_back(Diagnostic); + } + } + Io.mapRequired("Diagnostics", Diagnostics); + Doc.Diagnostics = Diagnostics; + } +}; +} // end namespace yaml +} // end namespace llvm + +#endif // LLVM_CLANG_TOOLING_DIAGNOSTICSYAML_H Index: include/clang/Tooling/ReplacementsYaml.h =================================================================== --- include/clang/Tooling/ReplacementsYaml.h +++ include/clang/Tooling/ReplacementsYaml.h @@ -65,7 +65,6 @@ static void mapping(IO &Io, clang::tooling::TranslationUnitReplacements &Doc) { Io.mapRequired("MainSourceFile", Doc.MainSourceFile); - Io.mapOptional("Context", Doc.Context, std::string()); Io.mapRequired("Replacements", Doc.Replacements); } }; Index: lib/Tooling/Core/CMakeLists.txt =================================================================== --- lib/Tooling/Core/CMakeLists.txt +++ lib/Tooling/Core/CMakeLists.txt @@ -4,6 +4,7 @@ Lookup.cpp Replacement.cpp QualTypeNames.cpp + Diagnostic.cpp LINK_LIBS clangAST Index: lib/Tooling/Core/Diagnostic.cpp =================================================================== --- lib/Tooling/Core/Diagnostic.cpp +++ lib/Tooling/Core/Diagnostic.cpp @@ -0,0 +1,45 @@ +//===--- Diagnostic.cpp - Framework for clang diagnostics tools ----------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// Implements classes to support/store diagnostics refactoring. +// +//===----------------------------------------------------------------------===// + +#include "clang/Tooling/Core/Diagnostic.h" +#include "clang/Basic/SourceManager.h" + +namespace clang { +namespace tooling { + +DiagnosticMessage::DiagnosticMessage(llvm::StringRef Message) + : Message(Message), FileOffset(0) {} + +DiagnosticMessage::DiagnosticMessage(llvm::StringRef Message, + const SourceManager &Sources, + SourceLocation Loc) + : Message(Message) { + assert(Loc.isValid() && Loc.isFileID()); + FilePath = Sources.getFilename(Loc); + FileOffset = Sources.getFileOffset(Loc); +} + +Diagnostic::Diagnostic(llvm::StringRef DiagnosticName, + Diagnostic::Level DiagLevel, StringRef BuildDirectory) + : DiagnosticName(DiagnosticName), DiagLevel(DiagLevel) {} + +Diagnostic::Diagnostic(llvm::StringRef DiagnosticName, + DiagnosticMessage &Message, + llvm::StringMap &Fix, + SmallVector &Notes, + Level DiagLevel, llvm::StringRef BuildDirectory) + : DiagnosticName(DiagnosticName), Message(Message), Fix(Fix), Notes(Notes), + DiagLevel(DiagLevel), BuildDirectory(BuildDirectory) {} + +} // end namespace tooling +} // end namespace clang Index: tools/extra/clang-apply-replacements/include/clang-apply-replacements/Tooling/ApplyReplacements.h =================================================================== --- tools/extra/clang-apply-replacements/include/clang-apply-replacements/Tooling/ApplyReplacements.h +++ tools/extra/clang-apply-replacements/include/clang-apply-replacements/Tooling/ApplyReplacements.h @@ -16,6 +16,7 @@ #ifndef LLVM_CLANG_APPLYREPLACEMENTS_H #define LLVM_CLANG_APPLYREPLACEMENTS_H +#include "clang/Tooling/Core/Diagnostic.h" #include "clang/Tooling/Refactoring.h" #include "llvm/ADT/StringMap.h" #include "llvm/ADT/StringRef.h" @@ -37,12 +38,12 @@ /// \brief Collection of source ranges. typedef std::vector RangeVector; -/// \brief Collection of TranslationUnitReplacements. -typedef std::vector -TUReplacements; +/// \brief Collection of TranslationUniDiagnostics. +typedef std::vector +TUDiagnostics; -/// \brief Collection of TranslationUnitReplacement files. -typedef std::vector TUReplacementFiles; +/// \brief Collection of TranslationUnitDiagnostic files. +typedef std::vector TUDiagnosticFiles; /// \brief Map mapping file name to Replacements targeting that file. typedef llvm::DenseMapgetBuffer(), nullptr, &eatDiagnostics); - tooling::TranslationUnitReplacements TU; + tooling::TranslationUnitDiagnostics TU; YIn >> TU; if (YIn.error()) { // File doesn't appear to be a header change description. Ignore it. @@ -238,23 +236,27 @@ return conflictsFound; } -bool mergeAndDeduplicate(const TUReplacements &TUs, +bool mergeAndDeduplicate(const TUDiagnostics &TUs, FileToReplacementsMap &GroupedReplacements, clang::SourceManager &SM) { // Group all replacements by target file. std::set Warned; for (const auto &TU : TUs) { - for (const tooling::Replacement &R : TU.Replacements) { - // Use the file manager to deduplicate paths. FileEntries are - // automatically canonicalized. - const FileEntry *Entry = SM.getFileManager().getFile(R.getFilePath()); - if (!Entry && Warned.insert(R.getFilePath()).second) { - errs() << "Described file '" << R.getFilePath() - << "' doesn't exist. Ignoring...\n"; - continue; + for (const auto &D : TU.Diagnostics) { + for (const auto &Fix : D.Fix) { + for (const tooling::Replacement &R : Fix.second) { + // Use the file manager to deduplicate paths. FileEntries are + // automatically canonicalized. + const FileEntry *Entry = SM.getFileManager().getFile(R.getFilePath()); + if (!Entry && Warned.insert(R.getFilePath()).second) { + errs() << "Described file '" << R.getFilePath() + << "' doesn't exist. Ignoring...\n"; + continue; + } + GroupedReplacements[Entry].push_back(R); + } } - GroupedReplacements[Entry].push_back(R); } } @@ -315,8 +317,8 @@ return true; } -bool deleteReplacementFiles(const TUReplacementFiles &Files, - clang::DiagnosticsEngine &Diagnostics) { +bool deleteDiagnosticFiles(const TUDiagnosticFiles &Files, + clang::DiagnosticsEngine &Diagnostics) { bool Success = true; for (const auto &Filename : Files) { std::error_code Error = llvm::sys::fs::remove(Filename); Index: tools/extra/clang-apply-replacements/tool/ClangApplyReplacementsMain.cpp =================================================================== --- tools/extra/clang-apply-replacements/tool/ClangApplyReplacementsMain.cpp +++ tools/extra/clang-apply-replacements/tool/ClangApplyReplacementsMain.cpp @@ -37,13 +37,12 @@ const cl::OptionCategory *VisibleCategories[] = {&ReplacementCategory, &FormattingCategory}; -static cl::opt RemoveTUReplacementFiles( +static cl::opt RemoveTUDiagnosticFiles( "remove-change-desc-files", cl::desc("Remove the change description files regardless of successful\n" "merging/replacing."), cl::init(false), cl::cat(ReplacementCategory)); - static cl::opt DoFormat( "format", cl::desc("Enable formatting of code changed by applying replacements.\n" @@ -67,20 +66,18 @@ cl::init("LLVM"), cl::cat(FormattingCategory)); namespace { -// Helper object to remove the TUReplacement files (triggered by +// Helper object to remove the TUDiagnostic files (triggered by // "remove-change-desc-files" command line option) when exiting current scope. class ScopedFileRemover { public: - ScopedFileRemover(const TUReplacementFiles &Files, + ScopedFileRemover(const TUDiagnosticFiles &Files, clang::DiagnosticsEngine &Diagnostics) - : TURFiles(Files), Diag(Diagnostics) {} + : TUDFiles(Files), Diag(Diagnostics) {} - ~ScopedFileRemover() { - deleteReplacementFiles(TURFiles, Diag); - } + ~ScopedFileRemover() { deleteDiagnosticFiles(TUDFiles, Diag); } private: - const TUReplacementFiles &TURFiles; + const TUDiagnosticFiles &TUDFiles; clang::DiagnosticsEngine &Diag; }; } // namespace @@ -214,11 +211,10 @@ if (DoFormat) FormatStyle = format::getStyle(FormatStyleOpt, FormatStyleConfig, "LLVM"); - TUReplacements TUs; - TUReplacementFiles TURFiles; - + TUDiagnostics TUs; + TUDiagnosticFiles TUDFiles; std::error_code ErrorCode = - collectReplacementsFromDirectory(Directory, TUs, TURFiles, Diagnostics); + collectReplacementsFromDirectory(Directory, TUs, TUDFiles, Diagnostics); if (ErrorCode) { errs() << "Trouble iterating over directory '" << Directory @@ -226,11 +222,11 @@ return 1; } - // Remove the TUReplacementFiles (triggered by "remove-change-desc-files" + // Remove the TUDiagnosticFiles (triggered by "remove-change-desc-files" // command line option) when exiting main(). std::unique_ptr Remover; - if (RemoveTUReplacementFiles) - Remover.reset(new ScopedFileRemover(TURFiles, Diagnostics)); + if (RemoveTUDiagnosticFiles) + Remover.reset(new ScopedFileRemover(TUDFiles, Diagnostics)); FileManager Files((FileSystemOptions())); SourceManager SM(Diagnostics, Files); Index: tools/extra/clang-tidy/ClangTidy.h =================================================================== --- tools/extra/clang-tidy/ClangTidy.h +++ tools/extra/clang-tidy/ClangTidy.h @@ -244,7 +244,8 @@ /// \brief Serializes replacements into YAML and writes them to the specified /// output stream. -void exportReplacements(const std::vector &Errors, +void exportReplacements(const StringRef MainFilePath, + const std::vector &Errors, raw_ostream &OS); } // end namespace tidy Index: tools/extra/clang-tidy/ClangTidy.cpp =================================================================== --- tools/extra/clang-tidy/ClangTidy.cpp +++ tools/extra/clang-tidy/ClangTidy.cpp @@ -35,6 +35,7 @@ #include "clang/Rewrite/Frontend/FrontendActions.h" #include "clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h" #include "clang/StaticAnalyzer/Frontend/AnalysisConsumer.h" +#include "clang/Tooling/DiagnosticsYaml.h" #include "clang/Tooling/Refactoring.h" #include "clang/Tooling/ReplacementsYaml.h" #include "clang/Tooling/Tooling.h" @@ -118,7 +119,7 @@ SmallVector, 4> FixLocations; { auto Level = static_cast(Error.DiagLevel); - std::string Name = Error.CheckName; + std::string Name = Error.DiagnosticName; if (Error.IsWarningAsError) { Name += ",-warnings-as-errors"; Level = DiagnosticsEngine::Error; @@ -572,18 +573,17 @@ WarningsAsErrorsCount += Reporter.getWarningsAsErrorsCount(); } -void exportReplacements(const std::vector &Errors, +void exportReplacements(const llvm::StringRef MainFilePath, + const std::vector &Errors, raw_ostream &OS) { - TranslationUnitReplacements TUR; - for (const ClangTidyError &Error : Errors) { - for (const auto &FileAndFixes : Error.Fix) - TUR.Replacements.insert(TUR.Replacements.end(), - FileAndFixes.second.begin(), - FileAndFixes.second.end()); + TranslationUnitDiagnostics TUD; + TUD.MainSourceFile = MainFilePath; + for (const auto &Error : Errors) { + tooling::Diagnostic Diag = Error; + TUD.Diagnostics.insert(TUD.Diagnostics.end(), Diag); } - yaml::Output YAML(OS); - YAML << TUR; + YAML << TUD; } } // namespace tidy Index: tools/extra/clang-tidy/ClangTidyDiagnosticConsumer.h =================================================================== --- tools/extra/clang-tidy/ClangTidyDiagnosticConsumer.h +++ tools/extra/clang-tidy/ClangTidyDiagnosticConsumer.h @@ -13,6 +13,7 @@ #include "ClangTidyOptions.h" #include "clang/Basic/Diagnostic.h" #include "clang/Basic/SourceManager.h" +#include "clang/Tooling/Core/Diagnostic.h" #include "clang/Tooling/Refactoring.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/StringMap.h" @@ -32,17 +33,7 @@ namespace tidy { -/// \brief A message from a clang-tidy check. -/// -/// Note that this is independent of a \c SourceManager. -struct ClangTidyMessage { - ClangTidyMessage(StringRef Message = ""); - ClangTidyMessage(StringRef Message, const SourceManager &Sources, - SourceLocation Loc); - std::string Message; - std::string FilePath; - unsigned FileOffset; -}; +typedef clang::tooling::DiagnosticMessage ClangTidyMessage; /// \brief A detected error complete with information to display diagnostic and /// automatic fix. @@ -51,31 +42,10 @@ /// dependency on a SourceManager. /// /// FIXME: Make Diagnostics flexible enough to support this directly. -struct ClangTidyError { - enum Level { - Warning = DiagnosticsEngine::Warning, - Error = DiagnosticsEngine::Error - }; - +struct ClangTidyError : clang::tooling::Diagnostic { ClangTidyError(StringRef CheckName, Level DiagLevel, bool IsWarningAsError, StringRef BuildDirectory); - std::string CheckName; - ClangTidyMessage Message; - // Fixes grouped by file path. - llvm::StringMap Fix; - SmallVector Notes; - - // A build directory of the diagnostic source file. - // - // It's an absolute path which is `directory` field of the source file in - // compilation database. If users don't specify the compilation database - // directory, it is the current directory where clang-tidy runs. - // - // Note: it is empty in unittest. - std::string BuildDirectory; - - Level DiagLevel; bool IsWarningAsError; }; Index: tools/extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp =================================================================== --- tools/extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp +++ tools/extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp @@ -45,7 +45,7 @@ // FIXME: Remove this once there's a better way to pass check names than // appending the check name to the message in ClangTidyContext::diag and // using getCustomDiagID. - std::string CheckNameInMessage = " [" + Error.CheckName + "]"; + std::string CheckNameInMessage = " [" + Error.DiagnosticName + "]"; if (Message.endswith(CheckNameInMessage)) Message = Message.substr(0, Message.size() - CheckNameInMessage.size()); @@ -110,23 +110,10 @@ }; } // end anonymous namespace -ClangTidyMessage::ClangTidyMessage(StringRef Message) - : Message(Message), FileOffset(0) {} - -ClangTidyMessage::ClangTidyMessage(StringRef Message, - const SourceManager &Sources, - SourceLocation Loc) - : Message(Message) { - assert(Loc.isValid() && Loc.isFileID()); - FilePath = Sources.getFilename(Loc); - FileOffset = Sources.getFileOffset(Loc); -} - ClangTidyError::ClangTidyError(StringRef CheckName, ClangTidyError::Level DiagLevel, - bool IsWarningAsError, - StringRef BuildDirectory) - : CheckName(CheckName), BuildDirectory(BuildDirectory), DiagLevel(DiagLevel), + bool IsWarningAsError, StringRef BuildDirectory) + : tooling::Diagnostic(CheckName, DiagLevel, BuildDirectory), IsWarningAsError(IsWarningAsError) {} // Returns true if GlobList starts with the negative indicator ('-'), removes it @@ -261,7 +248,7 @@ void ClangTidyDiagnosticConsumer::finalizeLastError() { if (!Errors.empty()) { ClangTidyError &Error = Errors.back(); - if (!Context.getChecksFilter().contains(Error.CheckName) && + if (!Context.getChecksFilter().contains(Error.DiagnosticName) && Error.DiagLevel != ClangTidyError::Error) { ++Context.Stats.ErrorsIgnoredCheckFilter; Errors.pop_back(); Index: tools/extra/clang-tidy/tool/ClangTidyMain.cpp =================================================================== --- tools/extra/clang-tidy/tool/ClangTidyMain.cpp +++ tools/extra/clang-tidy/tool/ClangTidyMain.cpp @@ -398,7 +398,7 @@ llvm::errs() << "Error opening output file: " << EC.message() << '\n'; return 1; } - exportReplacements(Errors, OS); + exportReplacements(FilePath.str(), Errors, OS); } printStats(Stats); Index: unittests/Tooling/ReplacementsYamlTest.cpp =================================================================== --- unittests/Tooling/ReplacementsYamlTest.cpp +++ unittests/Tooling/ReplacementsYamlTest.cpp @@ -22,11 +22,10 @@ TranslationUnitReplacements Doc; Doc.MainSourceFile = "/path/to/source.cpp"; - Doc.Context = "some context"; - Doc.Replacements - .push_back(Replacement("/path/to/file1.h", 232, 56, "replacement #1")); - Doc.Replacements - .push_back(Replacement("/path/to/file2.h", 301, 2, "replacement #2")); + Doc.Replacements.push_back( + Replacement("/path/to/file1.h", 232, 56, "replacement #1")); + Doc.Replacements.push_back( + Replacement("/path/to/file2.h", 301, 2, "replacement #2")); std::string YamlContent; llvm::raw_string_ostream YamlContentStream(YamlContent); @@ -37,7 +36,6 @@ // NOTE: If this test starts to fail for no obvious reason, check whitespace. ASSERT_STREQ("---\n" "MainSourceFile: /path/to/source.cpp\n" - "Context: some context\n" "Replacements: \n" // Extra whitespace here! " - FilePath: /path/to/file1.h\n" " Offset: 232\n" @@ -54,7 +52,6 @@ TEST(ReplacementsYamlTest, deserializesReplacements) { std::string YamlContent = "---\n" "MainSourceFile: /path/to/source.cpp\n" - "Context: some context\n" "Replacements:\n" " - FilePath: /path/to/file1.h\n" " Offset: 232\n" @@ -71,7 +68,6 @@ ASSERT_FALSE(YAML.error()); ASSERT_EQ(2u, DocActual.Replacements.size()); ASSERT_EQ("/path/to/source.cpp", DocActual.MainSourceFile); - ASSERT_EQ("some context", DocActual.Context); ASSERT_EQ("/path/to/file1.h", DocActual.Replacements[0].getFilePath()); ASSERT_EQ(232u, DocActual.Replacements[0].getOffset()); ASSERT_EQ(56u, DocActual.Replacements[0].getLength()); @@ -98,7 +94,6 @@ ASSERT_FALSE(YAML.error()); ASSERT_EQ("/path/to/source.cpp", DocActual.MainSourceFile); ASSERT_EQ(1u, DocActual.Replacements.size()); - ASSERT_EQ(std::string(), DocActual.Context); ASSERT_EQ("target_file.h", DocActual.Replacements[0].getFilePath()); ASSERT_EQ(1u, DocActual.Replacements[0].getOffset()); ASSERT_EQ(10u, DocActual.Replacements[0].getLength());