//===--- Diagnostic.h - Framework for clang diagnostics tools --*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // \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 <string> namespace clang { namespace tooling { /// Represents a range within a specific source file. struct FileByteRange { … }; /// Represents the diagnostic message with the error message associated /// and the information on the location of the problem. struct DiagnosticMessage { … }; /// Represents the diagnostic with the level of severity and possible /// fixes to be applied. struct Diagnostic { … }; /// Collection of Diagnostics generated from a single translation unit. struct TranslationUnitDiagnostics { … }; /// Get the first fix to apply for this diagnostic. /// \returns nullptr if no fixes are attached to the diagnostic. const llvm::StringMap<Replacements> *selectFirstFix(const Diagnostic& D); } // end namespace tooling } // end namespace clang #endif // LLVM_CLANG_TOOLING_CORE_DIAGNOSTIC_H