1 //===-- ClangDiagnostic.h ---------------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLDB_SOURCE_PLUGINS_EXPRESSIONPARSER_CLANG_CLANGDIAGNOSTIC_H 10 #define LLDB_SOURCE_PLUGINS_EXPRESSIONPARSER_CLANG_CLANGDIAGNOSTIC_H 11 12 #include <vector> 13 14 #include "clang/Basic/Diagnostic.h" 15 16 #include "lldb/lldb-defines.h" 17 #include "lldb/lldb-types.h" 18 19 #include "lldb/Expression/DiagnosticManager.h" 20 21 namespace lldb_private { 22 23 class ClangDiagnostic : public Diagnostic { 24 public: 25 typedef std::vector<clang::FixItHint> FixItList; 26 classof(const ClangDiagnostic *)27 static inline bool classof(const ClangDiagnostic *) { return true; } classof(const Diagnostic * diag)28 static inline bool classof(const Diagnostic *diag) { 29 return diag->getKind() == eDiagnosticOriginClang; 30 } 31 ClangDiagnostic(llvm::StringRef message,DiagnosticSeverity severity,uint32_t compiler_id)32 ClangDiagnostic(llvm::StringRef message, DiagnosticSeverity severity, 33 uint32_t compiler_id) 34 : Diagnostic(message, severity, eDiagnosticOriginClang, compiler_id) {} 35 36 ~ClangDiagnostic() override = default; 37 HasFixIts()38 bool HasFixIts() const override { return !m_fixit_vec.empty(); } 39 AddFixitHint(const clang::FixItHint & fixit)40 void AddFixitHint(const clang::FixItHint &fixit) { 41 m_fixit_vec.push_back(fixit); 42 } 43 FixIts()44 const FixItList &FixIts() const { return m_fixit_vec; } 45 private: 46 FixItList m_fixit_vec; 47 }; 48 49 } // namespace lldb_private 50 #endif // LLDB_SOURCE_PLUGINS_EXPRESSIONPARSER_CLANG_CLANGDIAGNOSTIC_H 51