1 //===-- ClangDiagnostic.h ---------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef lldb_ClangDiagnostic_h
11 #define lldb_ClangDiagnostic_h
12 
13 #include <vector>
14 
15 #include "clang/Basic/Diagnostic.h"
16 
17 #include "lldb/lldb-defines.h"
18 #include "lldb/lldb-types.h"
19 
20 #include "lldb/Expression/DiagnosticManager.h"
21 
22 namespace lldb_private {
23 
24 class ClangDiagnostic : public Diagnostic {
25 public:
26   typedef std::vector<clang::FixItHint> FixItList;
27 
classof(const ClangDiagnostic *)28   static inline bool classof(const ClangDiagnostic *) { return true; }
classof(const Diagnostic * diag)29   static inline bool classof(const Diagnostic *diag) {
30     return diag->getKind() == eDiagnosticOriginClang;
31   }
32 
ClangDiagnostic(const char * message,DiagnosticSeverity severity,uint32_t compiler_id)33   ClangDiagnostic(const char *message, DiagnosticSeverity severity,
34                   uint32_t compiler_id)
35       : Diagnostic(message, severity, eDiagnosticOriginClang, compiler_id) {}
36 
37   virtual ~ClangDiagnostic() = default;
38 
HasFixIts()39   bool HasFixIts() const override { return !m_fixit_vec.empty(); }
40 
AddFixitHint(const clang::FixItHint & fixit)41   void AddFixitHint(const clang::FixItHint &fixit) {
42     m_fixit_vec.push_back(fixit);
43   }
44 
FixIts()45   const FixItList &FixIts() const { return m_fixit_vec; }
46   FixItList m_fixit_vec;
47 };
48 
49 } // namespace lldb_private
50 #endif /* lldb_ClangDiagnostic_h */
51