ClangDiagnostic.h revision 314564
1356843Sdim//===-- ClangDiagnostic.h ---------------------------------------*- C++ -*-===//
2356843Sdim//
3356843Sdim//                     The LLVM Compiler Infrastructure
4356843Sdim//
5356843Sdim// This file is distributed under the University of Illinois Open Source
6356843Sdim// License. See LICENSE.TXT for details.
7356843Sdim//
8356843Sdim//===----------------------------------------------------------------------===//
9356843Sdim
10356843Sdim#ifndef lldb_ClangDiagnostic_h
11356843Sdim#define lldb_ClangDiagnostic_h
12356843Sdim
13356843Sdim#include <vector>
14356843Sdim
15356843Sdim#include "clang/Basic/Diagnostic.h"
16356843Sdim
17356843Sdim#include "lldb/lldb-defines.h"
18356843Sdim#include "lldb/lldb-types.h"
19356843Sdim
20356843Sdim#include "lldb/Expression/DiagnosticManager.h"
21356843Sdim
22356843Sdimnamespace lldb_private {
23356843Sdim
24356843Sdimclass ClangDiagnostic : public Diagnostic {
25356843Sdimpublic:
26356843Sdim  typedef std::vector<clang::FixItHint> FixItList;
27356843Sdim
28356843Sdim  static inline bool classof(const ClangDiagnostic *) { return true; }
29356843Sdim  static inline bool classof(const Diagnostic *diag) {
30356843Sdim    return diag->getKind() == eDiagnosticOriginClang;
31356843Sdim  }
32356843Sdim
33356843Sdim  ClangDiagnostic(const char *message, DiagnosticSeverity severity,
34356843Sdim                  uint32_t compiler_id)
35356843Sdim      : Diagnostic(message, severity, eDiagnosticOriginClang, compiler_id) {}
36356843Sdim
37356843Sdim  virtual ~ClangDiagnostic() = default;
38356843Sdim
39356843Sdim  bool HasFixIts() const override { return !m_fixit_vec.empty(); }
40356843Sdim
41356843Sdim  void AddFixitHint(const clang::FixItHint &fixit) {
42356843Sdim    m_fixit_vec.push_back(fixit);
43356843Sdim  }
44356843Sdim
45356843Sdim  const FixItList &FixIts() const { return m_fixit_vec; }
46356843Sdim  FixItList m_fixit_vec;
47356843Sdim};
48356843Sdim
49356843Sdim} // namespace lldb_private
50356843Sdim#endif /* lldb_ClangDiagnostic_h */
51356843Sdim