summaryrefslogtreecommitdiffstats
path: root/include/clang/Frontend/TextDiagnosticPrinter.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/clang/Frontend/TextDiagnosticPrinter.h')
-rw-r--r--include/clang/Frontend/TextDiagnosticPrinter.h85
1 files changed, 85 insertions, 0 deletions
diff --git a/include/clang/Frontend/TextDiagnosticPrinter.h b/include/clang/Frontend/TextDiagnosticPrinter.h
new file mode 100644
index 0000000..3c9dcb8
--- /dev/null
+++ b/include/clang/Frontend/TextDiagnosticPrinter.h
@@ -0,0 +1,85 @@
+//===--- TextDiagnosticPrinter.h - Text Diagnostic Client -------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This is a concrete diagnostic client, which prints the diagnostics to
+// standard error.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_CLANG_FRONTEND_TEXT_DIAGNOSTIC_PRINTER_H_
+#define LLVM_CLANG_FRONTEND_TEXT_DIAGNOSTIC_PRINTER_H_
+
+#include "clang/Basic/Diagnostic.h"
+#include "clang/Basic/SourceLocation.h"
+
+namespace llvm {
+ class raw_ostream;
+}
+
+namespace clang {
+class SourceManager;
+class LangOptions;
+
+class TextDiagnosticPrinter : public DiagnosticClient {
+ llvm::raw_ostream &OS;
+ const LangOptions *LangOpts;
+ SourceLocation LastWarningLoc;
+ FullSourceLoc LastLoc;
+ bool LastCaretDiagnosticWasNote;
+
+ bool ShowColumn;
+ bool CaretDiagnostics;
+ bool ShowLocation;
+ bool PrintRangeInfo;
+ bool PrintDiagnosticOption;
+ bool PrintFixItInfo;
+ unsigned MessageLength;
+
+public:
+ TextDiagnosticPrinter(llvm::raw_ostream &os,
+ bool showColumn = true,
+ bool caretDiagnistics = true, bool showLocation = true,
+ bool printRangeInfo = true,
+ bool printDiagnosticOption = true,
+ bool printFixItInfo = true,
+ unsigned messageLength = 0)
+ : OS(os), LangOpts(0),
+ LastCaretDiagnosticWasNote(false), ShowColumn(showColumn),
+ CaretDiagnostics(caretDiagnistics), ShowLocation(showLocation),
+ PrintRangeInfo(printRangeInfo),
+ PrintDiagnosticOption(printDiagnosticOption),
+ PrintFixItInfo(printFixItInfo),
+ MessageLength(messageLength) {}
+
+ void setLangOptions(const LangOptions *LO) {
+ LangOpts = LO;
+ }
+
+ void PrintIncludeStack(SourceLocation Loc, const SourceManager &SM);
+
+ void HighlightRange(const SourceRange &R,
+ const SourceManager &SrcMgr,
+ unsigned LineNo, FileID FID,
+ std::string &CaretLine,
+ const std::string &SourceLine);
+
+ void EmitCaretDiagnostic(SourceLocation Loc,
+ SourceRange *Ranges, unsigned NumRanges,
+ SourceManager &SM,
+ const CodeModificationHint *Hints,
+ unsigned NumHints,
+ unsigned Columns);
+
+ virtual void HandleDiagnostic(Diagnostic::Level DiagLevel,
+ const DiagnosticInfo &Info);
+};
+
+} // end namspace clang
+
+#endif
OpenPOWER on IntegriCloud